Wenn ich einen Node
zu einem NodeList
unter Verwendung der XmlParser
in Groovy hinzufügen, scheint die NodeList
die Änderung nicht zu reflektieren. Hier ist der Code, den ich in der GroovyConsole teste. Wenn Sie diesen Code ausführen, sollten Sie die Ausgabe "ADD FAILED" sehen, gefolgt von einem Dump der drei Elemente der NodeList. Ich habe auch das gleiche mit XmlSlurper versucht, bin aber zu XmlParser gewechselt, als ich gelesen habe, dass das DOM in XmlSluper grundsätzlich unveränderlich ist und dass Änderungen nur während der Serialisierung angewendet werden. Aber mit XmlParser, sollte das funktionieren?Hinzufügen eines Knotens zu einer Nodeliste mit XmlParser in Groovy
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 { [email protected] == "foo" }
if (foo == null) {
println "ADD FAILED. Here are the only properties found: "
site.properties.property.each { println "${[email protected]}=${[email protected]}" }
}
else {
println "SUCCESS"
}