0
我有一個方法需要搜索一個xml文件,該文件是按名稱使用XmlParser爲一個元素解析的,並且只有當該元素是一個結束節點時才返回它。例如:大小從使用XmlParser解析的文件確定一個結束節點
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()
}
}
我嘗試使用Node.children()()的作品,除了其中一個元素包含一個子元素的1對1的情況。在這種情況下,search1.children()。size()和search2.children()。size()都返回1.雖然,elementWithManyChildren的大小是3.我正在尋找一些方法能夠告訴結束節點除了有一個孩子的元素。我已經找到工作
一種方法是:
try{
search1[0].children().iterator().next().name()
}catch(e){
//If the next node does not have a name, it is an end node
}
但是這種解決方案似乎只是一個窮。
謝謝,這似乎工作,而不是特定的深度。你能解釋一下'**'在做什麼嗎? – 2011-04-27 16:23:23