2016-11-24 6 views
1

Groovy Node(XmlParserから)を与えられた場合、すべての子を削除したいと考えています。Groovy xmlノードからすべての子を削除します

それほど簡単ではないことが分かります。私が考えることのできる方法のほとんどは、ConcurrentModificationExceptionを引き起こしました。イテレータを使用しても助けにならなかった、それは私には驚きだった。

私がそれをやり遂げた唯一の方法は、最初にすべての子を新しいリストにコピーしてから、そのリストを反復することでした。このようなもの:

def children = [] 
children.addAll(node.children()) 
children.each { node.remove(it) } 

これを行うには、より良い、面白い方法はありませんか?

+0

あなたはnode.value = "" を設定してみてくださいましたか? –

答えて

2

あまりに単純すぎるかもしれませんが、ノードの値を空の文字列に設定することができます。

import groovy.xml.* 

def xml = "<parent><child>Child</child><another>One</another></parent>" 

def node = new XmlParser().parseText(xml) 

node.value = "" 

println XmlUtil.serialize(node) 

<parent/>

+0

ハ! "Simplistic"は私が探していたものでした:)私は、ノード値を置き換えることによって子ノードが削除されたことに気付きませんでした。ありがとう! –

関連する問題