Groovy 从用XmlParser解析的文件确定结束节点

Groovy 从用XmlParser解析的文件确定结束节点,groovy,xml-parsing,Groovy,Xml Parsing,我有一个方法,它需要按名称搜索使用XmlParser解析的xml文件中的元素,并且仅当该元素是结束节点时才返回它。例如: class xmlTest extends GroovyTestCase { def void test(){ def xmlBody = """ <rootElement> <elementWithOneChild> <endElement&

我有一个方法,它需要按名称搜索使用XmlParser解析的xml文件中的元素,并且仅当该元素是结束节点时才返回它。例如:

    class xmlTest extends GroovyTestCase {
    def void test(){
        def xmlBody = """
        <rootElement>
            <elementWithOneChild>
                <endElement>Here is the end</endElement>
            </elementWithOneChild>
            <elementWithManyChildren>
                <one>1</one>
                <two>1</two>
                <three>1</three>
            </elementWithManyChildren>
        </rootElement>"""

    def parsedBody = new XmlParser().parseText(xmlBody)

    def search1 = parsedBody.depthFirst().grep({it.name() == "elementWithOneChild"})
    println search1[0].children().size()

    def search2 = parsedBody.depthFirst().grep({it.name() == "endElement"})
    println search2[0].children().size()

    def search3 = parsedBody.depthFirst().grep({it.name() == "elementWithManyChildren"})
    println search3[0].children().size()
    }   
}

但是这个解决方案看起来很糟糕。

可能会浪费几个周期,但这应该允许您找到终端节点

assert search1[0].'**'.size() == 2
assert search2[0].'**'.size() == 1
assert search3[0].'**'.size() == 4

谢谢,这似乎是工作,并不是具体的深度。你能解释一下“**”在做什么吗?
assert search1[0].'**'.size() == 2
assert search2[0].'**'.size() == 1
assert search3[0].'**'.size() == 4