【发布时间】:2016-08-05 06:22:27
【问题描述】:
当我在 Groovy 中使用 XmlParser 将 Node 添加到 NodeList 时,NodeList 似乎没有反映更改。这是我在 GroovyConsole 中测试的代码。如果您运行此代码,您应该会看到输出“ADD FAILED”,然后是 NodeList 的三个元素的转储。我也用 XmlSlurper 尝试过同样的事情,但是当我读到 XmlSluper 中的 DOM 基本上是不可变的并且只在序列化期间应用更改时切换到 XmlParser。但是使用 XmlParser,这应该工作吗?
def xml = '''
<site id='myCoolSite'>
<pages/>
<templates/>
<properties>
<property name='good' value='true'/>
<property name='nice' value='true'/>
<property name='expensive' value='false'/>
</properties>
<stuff/>
</site>
'''
site = new XmlParser().parseText( xml )
assert site != null
assert site.properties.property instanceof NodeList
assert site.properties.property.size() == 3
def newNode = new Node(null, "property", [name: "foo", value: "bar"] )
site.properties.property.add( 0, newNode )
def foo = site.properties.property.find { it.@name == "foo" }
if ( foo == null ) {
println "ADD FAILED. Here are the only properties found: "
site.properties.property.each { println "${it.@name}=${it.@value}" }
}
else {
println "SUCCESS"
}
【问题讨论】:
标签: xml groovy xmlslurper