Groovy:查找并替换所有节点名称

时间:2017-08-05 06:21:55

标签: xml groovy

考虑到我有以下XML结构:

<Header>
   <Parent1>
       <Line> ABC </Line>
   </Parent1>
   <Parent1>
       <Line> CDE </Line>
   </Parent1>
   <Parent2>
       <Line> EFG </Line>
   </Parent2>
</Header>

我希望所有Parent1个父节点都更改为Parent2。像这样:

<Header>
   <Parent2>
       <Line> ABC </Line>
   </Parent2>
   <Parent2>
       <Line> CDE </Line>
   </Parent2>
   <Parent2>
       <Line> EFG </Line>
   </Parent2>
</Header>

在Groovy中有一种简单的方法来执行此要求吗?

1 个答案:

答案 0 :(得分:2)

您可以使用XmlSlurper执行此操作。

def xml = '''<?xml version='1.0' encoding='utf-8'?>
<Header>
   <Parent1>
       <Line> ABC </Line>
   </Parent1>
   <Parent1>
       <Line> CDE </Line>
   </Parent1>
   <Parent2>
       <Line> EFG </Line>
   </Parent2>
</Header>
'''

def result = new XmlSlurper().parseText(xml)

result.Parent1.replaceNode {
    'Parent2'(it.attributes(), it.children())
}

println(XmlUtil.serialize(result))

您可以在XML Processing documentation中找到更多信息。