从Groovy xml节点中删除所有子节点

从Groovy xml节点中删除所有子节点,xml,groovy,Xml,Groovy,因此,我有一个看起来非常普通和简单的任务:给定一个Groovy节点(来自XmlParser),我想删除它的所有子节点 结果不是那么简单。我能想到的大多数方法都导致了ConcurrentModificationException。即使使用迭代器也没有帮助,这让我感到惊讶 我做到这一点的唯一方法是首先将所有子项复制到一个新列表中,然后迭代该列表。大概是这样的: def children = [] children.addAll( node.children() ) children.each { n

因此,我有一个看起来非常普通和简单的任务:给定一个Groovy节点(来自XmlParser),我想删除它的所有子节点

结果不是那么简单。我能想到的大多数方法都导致了ConcurrentModificationException。即使使用迭代器也没有帮助,这让我感到惊讶

我做到这一点的唯一方法是首先将所有子项复制到一个新列表中,然后迭代该列表。大概是这样的:

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

有没有更好、更常规的方法呢?

可能过于简单,但我认为您可以将节点的值设置为空字符串

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)
导入groovy.xml* def xml=“ChildOne” def node=new XmlParser().parseText(xml) node.value=“” println XmlUtil.serialize(节点)

是否尝试设置node.value=“”?Ha!“简单化”是我想要的:)我没有意识到替换节点值会删除子节点。谢谢