如何使用Python在指定层级合并两个XML文件
Python合并XML文件:指定层级合并(以Elements为例)
你当前的实现是直接将第二个XML根节点的子元素追加到第一个根节点下,导致生成了两个<Elements>节点。要实现把两个XML中的<Element>合并到同一个<Elements>节点内,只需精准定位到目标层级后再合并子元素,具体代码如下:
import xml.etree.ElementTree as ET # 解析两个XML文件 tree1 = ET.parse('File1.xml') tree2 = ET.parse('File2.xml') root1 = tree1.getroot() root2 = tree2.getroot() # 定位第一个XML中的Elements节点 elements_node = root1.find('Elements') # 提取第二个XML中Elements节点下的所有Element子节点 source_elements = root2.find('Elements') # 将第二个XML的Element节点逐个追加到第一个的Elements节点下 for element in source_elements: elements_node.append(element) # 保存合并后的XML(保留XML声明和指定编码) tree1.write('merged_files.xml', encoding='ASCII', xml_declaration=True)
合并后得到的目标结果:
<?xml version='1.0' encoding='ASCII'?> <MyData> <Elements> <Element> <ElementID>15</ElementID> </Element> <Element> <ElementID>16</ElementID> </Element> </Elements> </MyData>
核心逻辑是避免直接操作根节点的extend方法,而是定位到需要合并的<Elements>层级,把第二个文件里该层级下的所有子节点(即<Element>)逐一追加到第一个文件的对应节点中,以此实现同一层级内的内容合并。
内容的提问来源于stack exchange,提问作者Sheldon
相关产品推荐
相关产品推荐

