所以我看起来是一个非常常见且简单的任务:给定一个Groovy Node(来自XmlParser),我想删除它的所有子节点。
事实证明并非如此简单。我能想到的大多数方法都会导致ConcurrentModificationException。即使使用迭代器也无济于事,这对我来说很惊讶。
我设法做到的唯一方法是首先将所有孩子复制到一个新列表中,然后迭代该列表。像这样:
def children = []
children.addAll( node.children() )
children.each { node.remove(it) }
是不是有更好,更时髦的方法呢?
答案 0 :(得分: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/>