我有一个非常简单的(我认为)像这样的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>
Run Code Online (Sandbox Code Playgroud)
我面临的问题是我不能简单地用这个代码分别得到每个节点...它正在打印所有的东西,我真正想要做的是将每个节点收集到一个地图中,然后询问/转换地图中的一些键/值对并替换它们(我知道......)
这是我可怕的代码......任何人都有可能让我朝着正确的方向前进?
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"
}
Run Code Online (Sandbox Code Playgroud)
在地图内部操纵它会更容易吗?(我首先使用地图生成了这个xml,认为有一些简单的方法可以使用XML ...我开始怀疑经过几天闲逛并且基本无处可去)
感谢致敬
Dav*_*ton 13
继续获取内部节点的原因是因为您错误地迭代外部列表两次.内循环应该只迭代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()}"
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
thing index: 1
a: 123
b: 456
c: 789
thing index: 2
a: 123
b: 456
c: 789
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20420 次 |
| 最近记录: |