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

如何使用Python将单个XML文件按根节点子元素拆分为多个独立XML文件

实现XML根节点下不同名称子元素的拆分方案

完全可以按照根节点下子元素的顺序逐个生成独立XML文件,无需提前知道子元素的具体名称。

实现思路

使用Python标准库xml.etree.ElementTree即可完成,核心逻辑如下:

  • 读取原XML文件,解析得到根节点对象
  • 通过list(根节点)直接获取根节点下所有直接子元素的有序列表,顺序与原XML中的排列顺序完全一致
  • 遍历每个子元素,每次创建新的<Source>根节点,将当前子元素作为唯一子节点加入新根
  • 格式化XML结构后写入独立文件

完整实现代码

import xml.etree.ElementTree as ET
import copy

# 替换为你的源XML文件路径
tree = ET.parse("source.xml")
root = tree.getroot()

# 遍历根节点下所有直接子元素,按原XML顺序处理
for idx, child in enumerate(root, start=1):
    # 创建新的Source根节点
    new_root = ET.Element("Source")
    # 深拷贝当前子元素到新根下,避免修改原XML结构
    new_root.append(copy.deepcopy(child))
    new_tree = ET.ElementTree(new_root)
    
    # 格式化XML缩进(Python 3.9及以上版本支持,不需要格式化可删除该行)
    ET.indent(new_tree, space="    ")
    
    # 输出文件名可自定义,当前规则为xml1.xml、xml2.xml,也可改为f"{child.tag}.xml"用元素名命名
    output_name = f"xml{idx}.xml"
    new_tree.write(output_name, encoding="utf-8", xml_declaration=True)

说明

  • 不需要用findall匹配固定标签名,list(root)会自动获取根节点下所有第一层子元素,完全适配子元素名称不同的场景
  • 处理顺序和原XML中子元素的排列顺序1:1对应,第一个子元素生成xml1.xml,第二个生成xml2.xml,符合需求
  • 如果使用Python 3.9以下版本需要格式化XML,可以引入第三方库lxml的格式化方法,或者手动处理缩进即可
  • 生成的文件结构和你给出的预期输出完全一致

内容的提问来源于stack exchange,提问作者Giampaolo Levorato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:27:03