用Groovy XmlParser搜索整个文档中的XML元素

用Groovy XmlParser搜索整个文档中的XML元素,xml,groovy,Xml,Groovy,我正在使用GroovyXmlParser阅读一些XML文档。只要我知道元素在树中的位置,这就行了。但是,我还没有找到一种方法来搜索整个XML文档中的元素,例如在XPath//ElementName中 做这件事的最佳方式是什么?正在寻找类似的东西吗 def xml = ''' <root> <parent> <child> <firstName>John</firstName>

我正在使用Groovy
XmlParser
阅读一些XML文档。只要我知道元素在树中的位置,这就行了。但是,我还没有找到一种方法来搜索整个XML文档中的元素,例如在XPath
//ElementName


做这件事的最佳方式是什么?

正在寻找类似的东西吗

def xml = 
'''
<root>
    <parent>
        <child>
            <firstName>John</firstName>
            <lastName>Doe</lastName>
        </child>
        <child>
            <firstName>Tony</firstName>
            <lastName>Stark</lastName>
        </child>
        <child>
            <firstName>Captain</firstName>
            <lastName>America</lastName>
        </child>
    </parent>
</root>
'''

def parsed = new XmlParser().parseText(xml)
assert ['John', 'Tony', 'Captain'] == 
          parsed.depthFirst().findAll { it.name() == 'firstName' }*.text()

在找这样的东西吗

def xml = 
'''
<root>
    <parent>
        <child>
            <firstName>John</firstName>
            <lastName>Doe</lastName>
        </child>
        <child>
            <firstName>Tony</firstName>
            <lastName>Stark</lastName>
        </child>
        <child>
            <firstName>Captain</firstName>
            <lastName>America</lastName>
        </child>
    </parent>
</root>
'''

def parsed = new XmlParser().parseText(xml)
assert ['John', 'Tony', 'Captain'] == 
          parsed.depthFirst().findAll { it.name() == 'firstName' }*.text()

您还可以对相同的结果执行
parsed.'**'.findAll…
,也可以对相同的结果执行
parsed.'**'.findAll…