我需要在 xml 的第三个块上合并两个 xml 文件。因此,文件 A.xml 和 B.xml 如下所示:
一个.xml
<sample id="1">
<workflow value="x" version="1"/>
<results>
<result type="T">
<result_data type="value" value="19"/>
<result_data type="value" value="15"/>
<result_data type="value" value="14"/>
<result_data type="value" value="13"/>
<result_data type="value" value="12"/>
</result>
</results>
</sample>
B.xml
<sample id="1">
<workflow value="x" version="1"/>
<results>
<result type="Q">
<result_data type="value" value="11"/>
<result_data type="value" value="21"/>
<result_data type="value" value="13"/>
<result_data type="value" value="12"/>
<result_data type="value" value="15"/>
</result>
</results>
</sample>
我需要合并“结果”
<sample id="1">
<workflow value="x" version="1"/>
<results>
<result type="T">
<result_data type="value" value="19"/>
<result_data type="value" value="15"/>
<result_data type="value" value="14"/>
<result_data type="value" value="13"/>
<result_data type="value" value="12"/>
</result>
<result type="Q">
<result_data type="value" value="11"/>
<result_data type="value" value="21"/>
<result_data type="value" value="13"/>
<result_data type="value" value="12"/>
<result_data type="value" value="15"/>
</result>
</results>
</sample>
到目前为止我所做的是:
import os, os.path, sys
import glob
from xml.etree import ElementTree
def run(files):
xml_files = glob.glob(files +"/*.xml")
xml_element_tree = None
for xml_file in xml_files:
# get root
data = ElementTree.parse(xml_file).getroot()
# print ElementTree.tostring(data)
for result in data.iter('result'):
if xml_element_tree is None:
xml_element_tree = data
else:
xml_element_tree.extend(result)
if xml_element_tree is not None:
print ElementTree.tostring(xml_element_tree)
如您所见,我将初始 xml_element_tree 分配给具有标题等的数据,然后使用“结果”进行扩展。然而,这给了我这个:
<sample id="1">
<workflow value="x" version="1"/>
<results>
<result type="T">
<result_data type="value" value="19"/>
<result_data type="value" value="15"/>
<result_data type="value" value="14"/>
<result_data type="value" value="13"/>
<result_data type="value" value="12"/>
</result>
</results>
<result_data type="value" value="11"/>
<result_data type="value" value="21"/>
<result_data type="value" value="13"/>
<result_data type="value" value="12"/>
<result_data type="value" value="15"/>
</result>
</sample>
结果需要在底部。任何帮助将不胜感激。