我有一个像这样的简单 XML 文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Things>
<thing indexNum='1'>
<a>123</a>
<b>456</b>
<c>789</c>
</thing>
<thing indexNum='2'>
<a>123</a>
<b>456</b>
<c>789</c>
</thing>
</Things>
我面临的问题是,我不能简单地使用此代码分别获取每个节点 - 它正在打印所有内容,而我试图做的是将每个节点收集到地图中,然后询问/转换映射中的一些键/值对并替换它们。
这是我的代码;有人可以给我指明正确的方向吗?
def counter = 0
Things.thing.each { tag ->
counter++
println "\n-------------------------------- $counter ------------------------------------"
Things.thing.children().each { tags ->
println "$counter${tags.name()}: $tags"
return counter
}
println "\n$counter things processed...\n"
}
在地图内操作它会更容易吗?
您不断获取内部节点的原因是因为您错误地迭代了外部列表两次。内循环应该只迭代
tag
:
doc = new XmlSlurper().parse("things.xml")
doc.thing.each { thing ->
println "thing index: ${thing.@indexNum}"
thing.children().each { tag ->
println " ${tag.name()}: ${tag.text()}"
}
}
输出:
thing index: 1
a: 123
b: 456
c: 789
thing index: 2
a: 123
b: 456
c: 789