使用XmlSlurper或XmlParser更改xml元素/标记名称

时间:2016-06-28 03:06:15

标签: groovy xmlslurper

我有一个看起来像这样的xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Samples>
  <Sample>
     <Name>
        Sample1
     </Name>
     <Date>
        01/20/2016
     </Date>
  </Sample>
</Samples>

我想简单地从&#34;样本&#34;更改标签名称to&#34; SampleList&#34;。我该怎么做?

1 个答案:

答案 0 :(得分:1)

replaceNode可用于重命名节点,如下所示:

def xml = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Samples>
  <Sample>
     <Name>
        Sample1
     </Name>
     <Date>
        01/20/2016
     </Date>
  </Sample>
</Samples>
'''

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

result.replaceNode { 
    'SampleList' it.children() 
}

groovy.xml.XmlUtil.serialize(result)

replaceNode将一个闭包作为方法参数,该参数委托给构建器。特别是在这种情况下,替换节点而不是将其附加到主文档。 'SampleList' it.children()'SampleList(it.children())'类似。

Parsed xml的根元素为Samples(需要替换),replaceNode直接在result完成。