给出数据模型
<outerTag>
<tagA>
</tagB>
</tagA>
<tagC>
<interestingContent>
...
</interestingContent>
</tagC>
</outerTag>
我想将<interestingContent>
的子节点移到<tagB>
中。我不知道移动节点的可能内容,它们也可能有子节点。我目前正在使用GPath,并认为类似这样的简单操作应该有效:
outertag.tagC.childNodes().each { node ->
outerTag.tagA.tagB.appendNode(node)
}
但是,尽管我能够从节点读取名称和文本,但是appendNode
似乎无法解决问题。虽然我可以从理论上读取子级的属性,文本和名称,使用它创建一个新节点,然后追加该节点,但我觉得这是不必要的,特别是因为它需要是一个递归函数,因为节点可以具有子节点自己。
答案 0 :(得分:0)
您的代码进行了较小的更改
def outerTag = new XmlParser().parseText('''<outerTag>
<tagA>
<tagB/>
</tagA>
<tagC>
<interestingContent a="a">1</interestingContent>
<interestingContent a="b">2</interestingContent>
</tagC>
</outerTag>''')
outerTag.tagC[0].children().each { child ->
outerTag.tagA.tagB[0].append(child)
}
//reset value for tagC
outerTag.tagC[0].setValue("")
println groovy.xml.XmlUtil.serialize(outerTag)