假设我有一个我想用replaceNode
替换的节点,但是,我不想使用Builder
来执行此操作 - 或者更确切地说,我已经拥有了一个节点替换它:
replacement = new XmlParser.parse('input.xml')
root.depthFirst().replaceme.each { it ->
it.replaceNode { node ->
// This is what I can't figure out
}
}
我尝试了很多不同的迭代,但似乎无法解决这个问题。如果我只返回该段中的文本,它将用空节点替换该节点。
例如,如果我的输入文件是这样的: 这应该被取代
我有这样的替代品: 这将取代原始
我想做点什么:
top = new XmlParser().parseFile('input.xml')
top.middle.each { it ->
it.replaceNode { node ->
new XmlParser().parseFile('replacement.xml')
}
}
答案 0 :(得分:2)
如果您不介意切换到XmlSlurper(),则以下内容应该有效:
def top = new XmlSlurper().parse('input.xml')
top.middle.each { node ->
node.replaceNode {
mkp.yield(new XmlSlurper().parse('replacement.xml'))
}
}
将使用replacement.xml的内容替换所有中间节点