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