使用groovy遍历每个xml节点,打印每个节点
发布时间:2020-12-14 16:32:22 所属栏目:大数据 来源:网络整理
导读:我有一个非常简单的(我认为)像这样的xml文件… ?xml version="1.0" encoding="UTF-8" standalone="yes" ?Thingsthing indexNum='1' a123/a b456/b c789/c/thingthing indexNum='2' a123/a b456/b c789/c/thing/Things 我面临的问题是,我不能简单地用这个代码
我有一个非常简单的(我认为)像这样的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" } 在地图内操纵它会更容易吗? (我首先使用地图生成了这个xml,认为有一些简单的方法可以使用XML …我开始怀疑经过几天的闲逛并且基本上无处可去) 感谢致敬 解决方法
继续获取内部节点的原因是因为您错误地迭代外部列表两次.内部循环应仅在标记上迭代:
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |