gpt4 book ai didi

xml - 将 XML 片段插入 Groovy 中的另一个 XML 文档

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:41 26 4
gpt4 key购买 nike

下面的代码片段应该将片段 XML 插入到 body 中,就在 elem 之后。

def body = '''
<parent>
<child>
<elem>
<name>Test</name>
</elem>
</child>
</parent>
'''

def fragment = '''
<foo>
<bar>hello!</bar>
<baz/>
</foo>
'''

def bodyNode = new XmlParser().parseText(body)
def fragmentNode = new XmlParser().parseText(fragment)

bodyNode.child*.appendNode(fragmentNode)

def newFileName= '/Users/xxx/out.xml'
def writer = new FileWriter(newFileName)
new XmlNodePrinter(new PrintWriter(writer)).print(bodyNode)

out.xml 的预期内容:

<parent>
<child>
<elem>
<name>Test</name>
</elem>
<foo>
<bar>hello!</bar>
<baz/>
</foo>
</child>
</parent>

但是我得到的是:

<parent>
<child>
<elem>
<name>Test</name>
</elem>
<foo/>
</child>
</parent>

如您所见,foo 元素的内容被省略了。这种行为的原因是什么?我怎样才能获得正确的输出?

最佳答案

原因:

使用 appendNode() 而不是 append()。试试这个:

bodyNode.child*.append(fragmentNode)

或者

这是使用 XmlSlurper 实现正确输出的一种方法:

def body = '''
<parent>
<child>
<elem>
<name>Test</name>
</elem>
</child>
</parent>
'''

def fragment = '''
<foo>
<bar>hello!</bar>
<baz/>
</foo>
'''

def slurper = new XmlSlurper( false, false, false )
def bodyNode = slurper.parseText( body )
def fragmentNode = slurper.parseText( fragment )

bodyNode.child << fragmentNode

def sw = new StringWriter()
groovy.xml.XmlUtil.serialize(bodyNode, sw)
println sw.toString()

关于xml - 将 XML 片段插入 Groovy 中的另一个 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30352052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com