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

Python如何筛选XML中符合文件大小条件的节点生成新XML文件

Python实现XML按关联文件大小筛选节点方案

全程使用Python标准库实现,无需安装额外第三方依赖,核心用到xml.etree.ElementTree做XML解析处理、os模块获取文件大小。

核心逻辑

  • 读取解析original.xml文件,拿到XML根节点
  • 遍历所有<DATA>子节点,提取节点文本存储的文件路径
  • 计算对应文件的字节大小,仅保留文件大小大于10MB(即101024*1024 = 10485760字节)*的节点,删除不符合条件的节点
  • 将处理完成的XML结构格式化后写入新文件

完整实现代码

import xml.etree.ElementTree as ET
import os

# 基础配置
ORIGIN_XML_PATH = "original.xml"
OUTPUT_XML_PATH = "filtered.xml"
SIZE_THRESHOLD = 10 * 1024 * 1024  # 10MB对应的字节数

# 加载解析原始XML
tree = ET.parse(ORIGIN_XML_PATH)
root = tree.getroot()

# 遍历节点时用list做一层拷贝,避免遍历过程中删节点导致的漏遍历问题
for data_node in list(root.iter("DATA")):
    file_path = data_node.text.strip()
    try:
        file_size = os.path.getsize(file_path)
        # 文件大小不满足阈值就移除对应节点
        if file_size <= SIZE_THRESHOLD:
            root.remove(data_node)
    except OSError:
        # 文件不存在、无读权限等访问异常场景,默认移除对应节点,可按需调整为保留/打印日志
        root.remove(data_node)

# 自动格式化XML缩进(仅Python 3.9及以上版本支持)
ET.indent(tree, space="    ", level=0)

# 写入新XML文件,保持UTF-8编码和标准XML声明头
tree.write(
    OUTPUT_XML_PATH,
    encoding="UTF-8",
    xml_declaration=True
)

注意事项

  • 代码中10MB按操作系统通用的二进制规则换算(1MB=1024KB),如果需要按十进制规则(1MB=1000KB)计算,直接修改SIZE_THRESHOLD的数值即可
  • 若使用Python3.9以下版本,删除ET.indent相关代码也可正常生成符合语义的XML文件,仅输出内容无换行缩进,不影响文件正常使用
  • 异常分支的处理逻辑可根据实际业务需求调整,比如访问失败时保留节点、打印错误路径等

内容的提问来源于stack exchange,提问作者Abhishek N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:45:33