如何在Groovy中按标记名查找所有XML元素?

如何在Groovy中按标记名查找所有XML元素?,xml,groovy,Xml,Groovy,如何在Groovy(GPath)中通过标记名找到XML中的所有元素 我需要在此文档中找到所有car元素: <records> <first> <car> <id>378932</id> </car> </first> <second> <foo> <car> <name>audi</na

如何在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)
def cars = xml.depthFirst().findAll { it.name() == 'car' }
assert cars.size() == 2
您还可以执行以下操作:

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

谷歌:“GroovyXMLSlurper”谢谢大家,我知道使用什么类。你能解释一下我是如何通过一个给定的标记找到所有元素的吗?你的代码示例不起作用。它返回所有元素,而不仅仅是
car
-s。你测试过吗?确实:)这花了一些时间,但现在我也是Grails的人:)谢谢你的帮助,我投票支持了你的答案。但是右边的是我的。id标签没有正确关闭
def xml = new XmlSlurper().parse(file)
def cars = xml.depthFirst().findAll { it.name() == 'car' }
assert cars.size() == 2
def xml = new XmlSlurper().parse(file)
def cars = xml.'**'.findAll { it.name() == 'car' }