的名字在Groovy访问XML的子节点,同时访问父节点反复
问题描述:
我有一个这样的XML:的名字在Groovy访问XML的子节点,同时访问父节点反复
<Envelope>
<Node>
<Status>1</Status>
<Name1>John</Name1>
<Name2>Smith</Name2>
</Node>
<Node>
<Status>2</Status>
<Name1>Jane</Name1>
<Name2>Doe</Name2>
</Node>
</Envelope>
我想通过每一个节点,如果状态的值是1,使用名称1迭代和如果它是2,则使用Name2。
Envelope = holder.getNodeValues("//ns2:NonProvisionedServers")
for(node in Envelope)
if(node.Status == 1)
{
assert node.Name1 == "SomeFirstName"
}
if(node.Status == 2)
{
assert node.Name2 == "SomeLastName"
}
我以前做过最少量的Groovy脚本。我见过相关的帖子,但他们只遍历子节点,我不想做,因为我的父节点有很多子节点,我有很多父节点要经历。任何帮助,将不胜感激。
答
你可以这样来做:
def inx = '''<Envelope>
| <Node>
| <Status>1</Status>
| <Name1>John</Name1>
| <Name2>Smith</Name2>
| </Node>
| <Node>
| <Status>2</Status>
| <Name1>Jane</Name1>
| <Name2>Doe</Name2>
| </Node>
|</Envelope>'''.stripMargin()
// Parse the XML
def xml = new XmlSlurper().parseText(inx)
// For every <Node> element in the XML
xml.Node.each { node ->
// Print the child of the node called "Name" + Status
println node."Name${node.Status}"
}
,打印:
John
Doe
这帮助,非常感谢! – dhishkaow 2012-07-09 16:05:54