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

时间:2014-04-13 15:48:51

标签: xml groovy

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

Groovy这样做的方式是什么?

1 个答案:

答案 0 :(得分:4)

寻找这样的东西?

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()

(如Tim所述)您可以使用'**'进行depthFirst搜索

assert ['John', 'Tony', 'Captain'] == 
          parsed.'**'.findAll { it.name() == 'firstName' }*.text()