Groovy使用XMLHolder迭代节点

时间:2011-09-29 12:40:30

标签: xml groovy soapui

我希望使用XML-Holder迭代XML文件的节点。

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" ))
{}

它实际上遍历节点,但我不知道如何访问它们内部的值。

非常感谢你的帮助!

约翰

1 个答案:

答案 0 :(得分: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
        }
    }
}