我对此非常接近,但它对我不起作用。我有两个 XML 结构
结构为 Items -> Item(1 到多个实例(。
我有一个包含项目的现有项目,我想将所有实例从项目的第二个副本复制到现有副本。
def newMessage = new XmlParser().parseText(newMsg);
def newItems = newMessage.depthFirst().findAll{it.name() == 'Items'};
def existingMessage = new XmlParser().parse(src); //src is a file location
def existingSettlementItem = existingMessage.depthFirst().findAll{it.name() == 'Items'};
这给了我一个大小为 2 的数组列表,这是意料之中的。我可以很好地组合两个数组,这将给我一个 4 大小的数组我的节点列表。如何将其返回到 XML?
问候克里斯
添加了 XML 示例
<Items>
<SItem>
<MsgData>
<BahElements>
<Fr>
<Name>
<Address>
<Value>123 Fake St</Value>
</Address>
</Name>
</Fr>
<To>
<Name>
<Address>
<Value>123 Fake St</Value>
</Address>
</Name>
</To>
<MsgDefIdr>MSG_DEF_IDR_VALUE</MsgDefIdr>
</BahElements>
</MsgData>
</Item>
<Item>
<MsgData>
<BahElements>
<Fr>
<Name>
<Address>
<Value>123 Fake St</Value>
</Address>
</Name>
</Fr>
<To>
<Name>
<Address>
<Value>321 Fake St</Value>
</Address>
</Name>
</To>
<MsgDefIdr>MSG_DEF_IDR_VALUE</MsgDefIdr>
</BahElements>
</MsgData>
</Items>
两个 xml 数据中的 Item 节点合并到一个 xml 中的groovy script
。
您所需要做的就是选择要从其他 xml 合并项节点的对象并附加这些节点。例如,xml2 的项目需要合并到 xml1 中吗?然后使用:xml2Items.collect{ pXml1.Items.appendNode(it)}
我相信现在您知道如何以另一种方式进行合并,即将 xml1 的项目合并到 xml2 中。
//Create the parsed objects for xml data
def pXml1 = new XmlSlurper().parseText(xml1)
def pXml2 = new XmlSlurper().parseText(xml2)
//Merge the 2nd xml nodes into 1st xml
pXml2.'**'.findAll{it.name() == 'Item'}.collect{ pXml1.Items.appendNode(it)}
//Print the whole merged xml
println groovy.xml.XmlUtil.serialize(pXml1)
您可以快速试用此在线演示,并提供 xml 示例数据
请注意,xml 示例数据的格式不正确,因此在上面的演示中进行了更改。