我有2个xml文件:一个包含样本数据(包含我需要的所有元素),另一个包含实际数据(但没有所有元素)。我想将第二个文件中的实际值复制到我的第一个文件,其中元素名称匹配。
我正在考虑使用迭代器以某种方式实现此目的
文件1
<VKORG>str1234</VKORG>
<VTWEG>str1234</VTWEG>
<SPART>str1234</SPART>
<KUNNR>str1234</KUNNR>
<KDGRP>str1234</KDGRP>
<PLTYP>str1234</PLTYP>
<KONDA>str1234</KONDA>
<KONDM>str1234</KONDM>
<WAERK>str1234</WAERK>
<MATNR>str1234</MATNR>
文件2
<VKORG>CH12</VKORG>
<VTWEG>02</VTWEG>
<MATNR>000000000010000831</MATNR>
在此示例中,文件2中的3个字段将出现,文件1中的其余字段将保持原样(因为文件2中没有匹配的元素)。
实际文件不是平面的,并且具有多层嵌套元素,可能还有多个根元素。
THX
答案 0 :(得分:0)
我会通过使用实际值创建文件索引来实现。
然后遍历要填充的文件,在索引中查找内容。类似的东西:
src = lxml.etree.parse('real.xml')
ix = dict()
for n in src.getroot().iterdescendants():
ix[n.tag] = n
dest = lxml.etree.parse('template.xml')
for n in dest.getroot().iterdescendants():
if n.tag in ix:
n.text = ix[n.tag].text
你说它虽然在文件方面比较复杂 - 所以我很难准确地说出来。
编辑:我还没有测试过上面的代码