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