You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:30:01