Groovy XmlSlurper appendNode 仅子内容

Groovy XmlSlurper appendNode of child content only

提问人:Suwandi Cahyadi 提问时间:10/4/2023 更新时间:10/4/2023 访问量:17

问:

我有以下xml对象:

def slurper = new XmlSlurper()
def xmlObject = slurper.parseText("<root />")

def xmlObject2 = slurper.parseText("<root2><child1>hello</child1><child2>world</child2></root2>")

现在,目标是具有以下 XML 格式:

<root>
<root2>
<child1>hello</child1>
<child2>world</child2>
<root2>
</root>

如果我像这样使用 appendNode:

xmlObject.appendNode {
   root2(xmlObject2)
}

我会得到:

<root>
<root2>
<root2>
<child1>hello</child1>
<child2>world</child2>
<root2>
<root2>
</root>

我会有 2 个 root2。如何只附加子内容的 Node?还是没有任何标签名称的 appendNode?

谢谢。

时髦的 xmlslurper

评论


答:

1赞 Andrej Istomin 10/4/2023 #1

为什么不直接将节点添加为 ?这是我想出的:xmlObject.appendNode(xmlObject2)

import groovy.xml.XmlUtil

def slurper = new XmlSlurper()
def xmlObject = slurper.parseText("<root />")

def xmlObject2 = slurper.parseText("<root2><child1>hello</child1><child2>world</child2></root2>")

xmlObject.appendNode(xmlObject2)

println XmlUtil.serialize(xmlObject)

它产生:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <root2>
    <child1>hello</child1>
    <child2>world</child2>
  </root2>
</root>

看起来像你想要的结果。我希望它有所帮助。