我的xml数据如下所示:
<persons>
<person key="M">John Doe</person>
<person key="N">Jane Doe</person>
</persons>
我想把它们收集到像
这样的地图列表中[[key: M, name: John Doe], [key: N, name: Jane Doe]]
我在使用XmlSlurper将数据压入变量'p'后使用:
p.collect { [key: it.@key.text(), name it.text()] }
但我得到
[[key: MN, name: John DoeJane Doe]]
显然我做了一件非常错事,但我无法弄清楚是什么。我尝试了很多方法,但得到了相同的答案。
答案 0 :(得分:4)
尝试从根节点查找children()
。
def xml = """
<persons>
<person key="M">John Doe</person>
<person key="N">Jane Doe</person>
</persons>
"""
def slurper = new XmlSlurper().parseText( xml )
assert [
[key:'M', name:'John Doe'],
[key:'N', name:'Jane Doe']
] == slurper.children().collect {
[ key: it.@key.text(), name: it.text() ]
}