如何使用groovy从XML获取所有XML节点及其值?

时间:2014-05-23 20:08:19

标签: groovy

我有一个类似下面的XML。

xml1 = '''
<?xml version="1.0" encoding="UTF-8"?>
<soap>
    <group1>
        <g1node1>g1value1</g1node1>
        <g1node2>g1value2</g1node2>
        <g1node3>g1value3</g1node3>
    </group1>
    <group2 attr="attrvalue1">
        <g2node1>g2value1</g2node1>
        <g2node2>g2value2</g2node2>
        <g2node3>g2value3</g2node3>
    </group2>
</soap>
'''

在这里,我需要将所有xml节点及其值作为输出,作为逐行结果和带有groovy的列表。输出应该看起来像

g1node1 = g1value1
g1node2 = g1value2
... and so on...

或者使用如下所示的groovy地图

out = [g1node1 : "g1value1", g1node2 : "g1value2", ...and so on...]

任何人都可以帮助我如何使用groovy代码实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

我仍然想知道(正如蒂姆所提到的)你已尝试过的东西,但这是我的痒:

def result = new XmlSlurper().parseText( xml )
result.'**'.collectEntries { !it.childNodes() ? [ it.name(), it.text() ] : [:] }