如何将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
相关产品推荐
相关产品推荐

