如何使用groovy的XML Slurper更新XML?
发布时间:2020-12-14 16:26:27 所属栏目:大数据 来源:网络整理
导读:我阅读了关于 Updating XML with XmlSlurper的Groovy Codehaus文章,这引出了以下问题.考虑我们有一个输入XML结构为即将到来的: customer address street / city / postalcode / /address/customer 是否可以在不知道其具体结构的情况下更改XML?具体:我们有
我阅读了关于
Updating XML with XmlSlurper的Groovy Codehaus文章,这引出了以下问题.考虑我们有一个输入XML结构为即将到来的:
<customer> <address> <street /> <city /> <postalcode /> </address> </customer> 是否可以在不知道其具体结构的情况下更改XML?具体:我们有一个地址节点的参考,想要在不知道任何细节的情况下将它乘以3次? address.multiply(3) 输出应如下所示: <customer> <address> <street /> <city /> <postalcode /> </address> <address> <street /> <city /> <postalcode /> </address> <address> <street /> <city /> <postalcode /> </address> </customer> 这可以通过appendNode实现,但我缺少groovy中节点的克隆方法.有没有解决方案来实现这一目标? 解决方法
我目前认为克隆节点的唯一方法是将它们序列化为文本,并将它们作为xml的新位解析回来
像这样: import groovy.xml.StreamingMarkupBuilder import groovy.xml.XmlUtil def xml = """ <customer> <address> <street /> <city /> <postalcode /> </address> </customer> """ def root = new XmlSlurper().parseText( xml ) 2.times { String addressXml = new StreamingMarkupBuilder().bindNode( root.address ) clonedAddress = new XmlSlurper().parseText( addressXml ) root.appendNode( clonedAddress ) } println XmlUtil.serialize( root ) 打印出来: <?xml version="1.0" encoding="UTF-8"?> <customer> <address> <street/> <city/> <postalcode/> </address> <address> <street/> <city/> <postalcode/> </address> <address> <street/> <city/> <postalcode/> </address> </customer> 这可能是一种更简洁的方式……但此刻,我的思绪一片空白…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |