2016-04-13 15 views
0

でXMLPARSERを使用してノードリストにノードを追加します。 GroovyConsole内でテストしているコードは次のとおりです。このコードを実行すると、 "ADD FAILED"という出力が続き、NodeListの3つの要素のダンプが表示されます。私はXmlSlurperでも同じことを試みましたが、XmlSluperのDOMは基本的に変更不可能であり、変更はシリアル化中にのみ適用されることを読んだときにXmlParserに切り替えました。しかし、XmlParserでは、これはうまくいくのでしょうか?あなたがpropertiesの子供ではなくpropertyノード・リストに追加した場合は、私はGroovyで<code>XmlParser</code>を使用して<code>NodeList</code>に<code>Node</code>を追加すると、<code>NodeList</code>は、変更を反映するように表示されないの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" 
} 

答えて

0

は、それは動作します。 IEの変更:

site.properties.property.add(0, newNode) 

site.properties[0].children().add(0, newNode) 
関連する問題

 関連する問題