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

如何将etree.dump内容写入文件 运行后out.xml为空的修复方法

问题根因

xml.etree.ElementTree的dump()方法是调试专用方法,作用是直接把XML结构打印到系统标准输出(也就是运行代码的控制台),不会返回任何XML内容,返回值固定为None。你代码里把None作为内容写入文件,最终生成的out.xml自然是空的。

修复方法

推荐两种可直接运行的正确写法:

方法1:使用ElementTree原生write方法(最简便)

直接调用解析得到的tree对象自带的write方法写入文件,不需要手动处理文件读写逻辑:

import xml.etree.ElementTree as etree

tree = etree.parse('in.xml')
# 写入时指定utf-8编码、自动加XML头声明
tree.write('out.xml', encoding='utf-8', xml_declaration=True)

方法2:使用tostring获取内容后手动写入

如果需要对XML内容做自定义处理后再写入,可以用tostring()方法拿到序列化后的XML内容,再手动写文件:

import xml.etree.ElementTree as etree

tree = etree.parse('in.xml')
xml_content = etree.tostring(tree.getroot(), encoding='utf-8', xml_declaration=True)
# 写二进制内容用wb模式打开,避免编码异常
with open('out.xml', 'wb') as out_file:
    out_file.write(xml_content)
注意事项
  • dump()仅适合临时调试打印XML结构,不要用它做正式的序列化、文件写入逻辑。
  • 写入XML文件时建议明确指定encoding参数,搭配二进制写入模式,避免Windows等平台出现编码错乱、换行符异常的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:39:21