使用Python合并两个相似XML文件的技术方案问询
如何用Python合并两个结构相似的XML文件
嘿,我来帮你解决这个XML合并的问题!根据你给出的两个XML文件内容,看起来你想要把它们的<a>节点合并到同一个<data>根节点下,生成新的file3.xml。下面是用Python标准库实现的完整方案:
原文件内容
file1.xml
<data> <a> <b> <c>value1</c> <d>value2</d> </b> <e> <f>value3</f> <g>value4</g> </e> </a> </data>
file2.xml
<data> <a> <b> <c>value5</c> <d>value6</d> </b> <e> <f>value7</f> <g>value8</g> </e> </a> </data>
Python实现代码
我们使用Python内置的xml.etree.ElementTree模块解析XML,再用xml.dom.minidom来美化输出格式(避免生成紧凑的无缩进XML):
import xml.etree.ElementTree as ET from xml.dom import minidom def prettify(elem): """将XML元素转换为带缩进的美观字符串""" rough_string = ET.tostring(elem, 'utf-8') reparsed = minidom.parseString(rough_string) return reparsed.toprettyxml(indent=" ") # 解析两个输入XML文件 tree1 = ET.parse('file1.xml') root1 = tree1.getroot() tree2 = ET.parse('file2.xml') root2 = tree2.getroot() # 创建新的<data>根节点 new_root = ET.Element('data') # 将两个原文件中的<a>节点添加到新根节点 for child in root1: new_root.append(child) for child in root2: new_root.append(child) # 将合并后的XML写入file3.xml with open('file3.xml', 'w', encoding='utf-8') as output_file: output_file.write(prettify(new_root))
生成的file3.xml内容
运行上述代码后,你会得到如下格式的file3.xml:
<?xml version="1.0" ?> <data> <a> <b> <c>value1</c> <d>value2</d> </b> <e> <f>value3</f> <g>value4</g> </e> </a> <a> <b> <c>value5</c> <d>value6</d> </b> <e> <f>value7</f> <g>value8</g> </e> </a> </data>
额外说明
- 这个方案假设你需要保留两个原文件中的
<a>节点,将它们并列放在同一个<data>下。如果你的需求是合并相同路径下的子节点(比如合并<b>或<e>中的值),可以修改代码,遍历子节点并匹配路径后进行合并。 - 代码使用了Python标准库,不需要安装额外依赖,直接运行即可。
内容的提问来源于stack exchange,提问作者incognito
相关产品推荐
相关产品推荐

