我对此非常接近,但它不适合我。我有两个XML结构
结构是项目 - >项目(1到多个实例)。
我有一个现有项目,包含项目,我想将所有实例从第二个项目副本复制到现有项目。
<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>
这给了我一个大小为2的数组列表,这是预期的。我可以很好地组合两个数组,这将给我一个4个大小的节点数组。我怎样才能将其恢复为XML?
此致 克里斯
添加了XML示例
import h2o
h2o.init()
df = h2o.import_file("iris_wheader.csv")
pd = df.as_data_frame()
pd['sepal_len'].tolist()
答案 0 :(得分:2)
这是groovy script
,它将两个xml数据中的Item节点合并为一个xml。
您需要的只是选择要从其他xml合并Item节点的对象并附加这些节点。
例如,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示例数据快速尝试在线 Demo
请注意,xml示例数据格式不正确,因此在上面的演示中进行了更改。