2011-09-29 23 views
4

我想用XML-Holder迭代XML文件的節點。Groovy使用XMLHolder迭代節點

def reader = groovyUtils.getXmlHolder(test1); 

假設的XML如下所示:

<xml> 
    <node> 
     <val1/> 
     <val2/> 
    </node1> 
    <node> 
     <val1/> 
     <val2/> 
    </node2> 
</xml> 

我想從不同的節點讀出值。 (val1,val2)。 所以我嘗試這樣的:

for(node in reader.getNodeValues("//ns1:node")) 
{} 

這真的迭代的節點,但我不知道怎麼去在他們裏面的值的訪問。

非常感謝您的幫助!

約翰

回答

7

而不是getNodeValues,你可能想打電話getDomNodes代替。這將返回類org.w3c.dom.Node的標準Java DOM節點。從那裏你可以遍歷從getFirstChild開始的子節點,並重復getNextSibling。 Groovy的DOMCategory增加了一些方便的幫助方法,使其更加痛苦。

例如:

use (groovy.xml.dom.DOMCategory) { 
    for(node in reader.getDomNodes("//ns1:node")) { 
     node.children().each { child -> 
      println child 
     } 
    } 
} 
+0

謝謝你,這有助於!現在它工作了! – john