2011-07-17 54 views
17

如何通过Groovy(GPath)中的标签名称找到XML中的所有元素?如何在Groovy中通过标签名称查找所有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 
+1

ID标签不正确关闭 –

回答

30

这是怎么了它的工作原理:

def xml = new XmlSlurper().parse(file) 
def cars = xml.depthFirst().findAll { it.name() == 'car' } 
assert cars.size() == 2 
+0

确实:)它花了一些时间,但现在我也是一个Grails家伙:)感谢您的帮助,我提出了您的答案。然而,正确的是我的。 – yegor256

5

使用的XMLSlurper

def records = new XmlSlurper().parseText(file) 
reco​rds.depthFirst()​.findAll { !it.childNodes() && it.car} ​ 

/*Otherwise this returns the values for parent nodes as well*/ 
+0

您能给的Groovy代码的例子吗? – yegor256

+0

Google:“groovy xml slurper” http://groovy.codehaus.org/Reading+XML+using+Groovy%27s+XmlSlurper –

+0

谢谢你们,我知道要使用什么类。你能解释一下,我可以如何找到给定标签的所有元素? – yegor256

14

你也可以这样做:

def xml = new XmlSlurper().parse(file) 
def cars = xml.'**'.findAll { it.name() == 'car' } 
相关问题