将属性和值收集到字符串列表中

时间:2014-08-26 00:20:23

标签: list groovy xmlslurper collect

我的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]]

显然我做了一件非常错事,但我无法弄清楚是什么。我尝试了很多方法,但得到了相同的答案。

1 个答案:

答案 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() ] 
}