如何在Groovy(GPath)中按标签名称查找XML中的所有元素?
我需要找到本文档中的所有car
元素:
<records>
<first>
<car>
<id>378932</id>
</car>
</first>
<second>
<foo>
<car>
<name>audi</name>
</car>
</foo>
</second>
</records>
这就是我尝试过的失败:
def xml = new XmlSlurper().parse(file)
assert xml.car.size() == 2
答案 0 :(得分:31)
这是它的工作原理:
def xml = new XmlSlurper().parse(file)
def cars = xml.depthFirst().findAll { it.name() == 'car' }
assert cars.size() == 2
答案 1 :(得分:14)
你也可以这样做:
def xml = new XmlSlurper().parse(file)
def cars = xml.'**'.findAll { it.name() == 'car' }
答案 2 :(得分:5)
def records = new XmlSlurper().parseText(file)
records.depthFirst().findAll { !it.childNodes() && it.car}
/*Otherwise this returns the values for parent nodes as well*/