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

时间:2016-11-24 21:12:09

标签: xml groovy

所以我看起来是一个非常常见且简单的任务:给定一个Groovy Node(来自XmlParser),我想删除它的所有子节点。

事实证明并非如此简单。我能想到的大多数方法都会导致ConcurrentModificationException。即使使用迭代器也无济于事,这对我来说很惊讶。

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

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

是不是有更好,更时髦的方法呢?

1 个答案:

答案 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/>