【发布时间】:2014-09-22 17:18:00
【问题描述】:
我有一些要使用 XmlSlurper 解析的 xml,我想添加一个新节点,然后引用该新节点。这证明了我正在尝试做的事情。除了 1. 添加节点 2. 序列化 3. 再次解析 4. 引用新节点之外的任何解决方案?
import groovy.xml.XmlUtil
def xml = new XmlSlurper().parseText("<foo/>")
xml.appendNode({bar()});
//now try to append something to bar. Probably doesn't work because it's a closure
xml.bar.appendNode({baz()})
//no baz inside bar
println XmlUtil.serialize(xml)
谢谢。
编辑:
您必须使用 XMLParser 才能使其工作:
import groovy.xml.XmlUtil
//slurper - does NOT work
def xml = new XmlSlurper().parseText("<foo/>")
xml.appendNode({bar()});
//now try to append something to bar
xml.bar.appendNode({baz()})
//no baz inside bar
println XmlUtil.serialize(xml)
//parser - works
xml = new XmlParser().parseText("<foo/>")
xml.appendNode('bar');
//now try to append something to bar
xml.bar.first().appendNode('baz')
//no baz inside bar
println XmlUtil.serialize(xml)
这个帖子的答案解释了为什么:
【问题讨论】:
标签: groovy xml-parsing