Groovy XML SLurper 无法访问子节点
Groovy XML SLurper can't access child node
我最近开始使用 XML Slurper 并试图从 SOAP 信封访问特定的子节点。以下是我正在使用的 XML 的摘录:
<cons:ConsumerName>
<cons:FirstName>Robert</cons:FirstName>
<cons:MiddleName>John</cons:MiddleName>
<cons:FamilyName>Smith</cons:FamilyName>
</cons:ConsumerName>
<cons:ContactPersonName>
<cons:FirstName>William</cons:FirstName>
<cons:MiddleName>Michael</cons:MiddleName>
<cons:FamilyName>Doe</cons:FamilyName>
</cons:ContactPersonName>
我正在尝试访问 ConusmerName 块中 FirstName 的值,我只能使用以下方法获得两个名字值的列表:
def block = new XmlSlurper().parseText(text).'**'.findAll{it.name()=='FirstName'}
我试图只获取 ConsumerName 块的名字,方法是:
def block = new XmlSlurper().parseText(text).'ConsumerName'.findAll{it.name()=='FirstName'}
但是没有任何结果,我不知道我做错了什么?
我修复了你的 xml 并在此处提供答案:
def text = '<?xml version="1.0" encoding="UTF-8"?>' +
'<cons:Consumer xmlns:cons="urn:corp:cons">' +
' <cons:ConsumerName>' +
' <cons:FirstName>Robert</cons:FirstName>' +
' <cons:MiddleName>John</cons:MiddleName>' +
' <cons:FamilyName>Smith</cons:FamilyName>' +
' </cons:ConsumerName>' +
'' +
' <cons:ContactPersonName>' +
' <cons:FirstName>William</cons:FirstName>' +
' <cons:MiddleName>Michael</cons:MiddleName>' +
' <cons:FamilyName>Doe</cons:FamilyName>' +
' </cons:ContactPersonName>' +
'</cons:Consumer>'
def consumer = new XmlSlurper().parseText(text)
println "Consumer first name: ${consumer.ConsumerName.FirstName}"
输出:
Consumer first name: Robert
为了获取 XML 的 ConsumerName 块中的 firstName 值,我使用了以下内容:
def text = new File(requestFilePath).text
def fieldValue = new XmlSlurper().parseText(text).'**'.findAll{it.name()==tagBlockName}.getAt(tagName)[0]
def var = (String)fieldValue
我最近开始使用 XML Slurper 并试图从 SOAP 信封访问特定的子节点。以下是我正在使用的 XML 的摘录:
<cons:ConsumerName>
<cons:FirstName>Robert</cons:FirstName>
<cons:MiddleName>John</cons:MiddleName>
<cons:FamilyName>Smith</cons:FamilyName>
</cons:ConsumerName>
<cons:ContactPersonName>
<cons:FirstName>William</cons:FirstName>
<cons:MiddleName>Michael</cons:MiddleName>
<cons:FamilyName>Doe</cons:FamilyName>
</cons:ContactPersonName>
我正在尝试访问 ConusmerName 块中 FirstName 的值,我只能使用以下方法获得两个名字值的列表:
def block = new XmlSlurper().parseText(text).'**'.findAll{it.name()=='FirstName'}
我试图只获取 ConsumerName 块的名字,方法是:
def block = new XmlSlurper().parseText(text).'ConsumerName'.findAll{it.name()=='FirstName'}
但是没有任何结果,我不知道我做错了什么?
我修复了你的 xml 并在此处提供答案:
def text = '<?xml version="1.0" encoding="UTF-8"?>' +
'<cons:Consumer xmlns:cons="urn:corp:cons">' +
' <cons:ConsumerName>' +
' <cons:FirstName>Robert</cons:FirstName>' +
' <cons:MiddleName>John</cons:MiddleName>' +
' <cons:FamilyName>Smith</cons:FamilyName>' +
' </cons:ConsumerName>' +
'' +
' <cons:ContactPersonName>' +
' <cons:FirstName>William</cons:FirstName>' +
' <cons:MiddleName>Michael</cons:MiddleName>' +
' <cons:FamilyName>Doe</cons:FamilyName>' +
' </cons:ContactPersonName>' +
'</cons:Consumer>'
def consumer = new XmlSlurper().parseText(text)
println "Consumer first name: ${consumer.ConsumerName.FirstName}"
输出:
Consumer first name: Robert
为了获取 XML 的 ConsumerName 块中的 firstName 值,我使用了以下内容:
def text = new File(requestFilePath).text
def fieldValue = new XmlSlurper().parseText(text).'**'.findAll{it.name()==tagBlockName}.getAt(tagName)[0]
def var = (String)fieldValue