groovy/XML: 用另一个节点替换一个节点
groovy/XML: Replace a node by another one
我尝试使用 XmlSlurper
(或 XmlParser
)将一个 XML 节点替换为另一个节点。
原文XML:
<myXml>
...
<myNode>
<Name>name1</Name>
<Name>name2</Name>
<Name>name3</Name>
</myNode>
...
</myXml>
包含用于构建我的新节点的项目的列表
def namelist = ['name4','name5','name6','name7']
我想要的
<myXml>
...
<myNode>
<Name>name4</Name>
<Name>name5</Name>
<Name>name6</Name>
<Name>name7</Name>
</myNode>
...
</myXml>
要删除节点,我尝试了这个,但节点仍然存在:
def myXml = new XmlSlurper().parseText(xml)
myXml.myNode[0].replaceNode {}
然后我没有找到使用列表创建新节点的解决方案。
给你:
import groovy.xml.*
def xml = '''<myXml>
<myNode>
<Name>name1</Name>
<Name>name2</Name>
<Name>name3</Name>
</myNode>
</myXml>'''
def namelist = ['name4','name5','name6','name7']
def slurped = new XmlSlurper().parseText(xml)
slurped.myNode.replaceNode {
myNode {
namelist.collect { n ->
Name "$n"
}
}
}
new StreamingMarkupBuilder().bind {
mkp.yield slurped
}.toString()
该节点实际上已被替换,但您需要序列化 XML 才能看到它。
我尝试使用 XmlSlurper
(或 XmlParser
)将一个 XML 节点替换为另一个节点。
原文XML:
<myXml>
...
<myNode>
<Name>name1</Name>
<Name>name2</Name>
<Name>name3</Name>
</myNode>
...
</myXml>
包含用于构建我的新节点的项目的列表
def namelist = ['name4','name5','name6','name7']
我想要的
<myXml>
...
<myNode>
<Name>name4</Name>
<Name>name5</Name>
<Name>name6</Name>
<Name>name7</Name>
</myNode>
...
</myXml>
要删除节点,我尝试了这个,但节点仍然存在:
def myXml = new XmlSlurper().parseText(xml)
myXml.myNode[0].replaceNode {}
然后我没有找到使用列表创建新节点的解决方案。
给你:
import groovy.xml.*
def xml = '''<myXml>
<myNode>
<Name>name1</Name>
<Name>name2</Name>
<Name>name3</Name>
</myNode>
</myXml>'''
def namelist = ['name4','name5','name6','name7']
def slurped = new XmlSlurper().parseText(xml)
slurped.myNode.replaceNode {
myNode {
namelist.collect { n ->
Name "$n"
}
}
}
new StreamingMarkupBuilder().bind {
mkp.yield slurped
}.toString()
该节点实际上已被替换,但您需要序列化 XML 才能看到它。