如何使用Python xml.dom.minidom避免在写入XML文件时产生多余空行?
- 内容介绍
- 相关推荐
本文共计732个文字,预计阅读时间需要3分钟。
由于使用`writexml()`默认使用`newl='\n'`换行,并且对每个节点(包括文本节点)都调用`write()`,而`minidom`在解析时会将原始XML中的换行和缩进当作`Text`节点处理,因此节点保留下来时,这些空白文本节点就会变成肉眼看得到的空白行。
如何让 writexml() 不输出多余空行
核心是绕过默认的格式化逻辑,手动控制换行与缩进。最可靠的做法是禁用自动换行,再用 toprettyxml() 的替代方案(因为它自带空行缺陷),或直接用字符串替换兜底:
- 传入
writexml(..., newl='', encoding='utf-8'),彻底关闭换行符注入 - 用
toxml()替代writexml()获取紧凑 XML 字符串,再按需加缩进(如用xml.dom.minidom.parseString().toprettyxml()后手工清理) - 若必须用
writexml(),需重写Document的writexml()方法,跳过所有仅含空白的Text节点
toxml() vs toprettyxml():哪个更可控
toxml() 输出无换行、无缩进的单行 XML,完全规避空行问题;toprettyxml() 表面美观,实则会在每个元素前后插入空行,且无法通过参数关闭——这是它设计上的硬伤。
本文共计732个文字,预计阅读时间需要3分钟。
由于使用`writexml()`默认使用`newl='\n'`换行,并且对每个节点(包括文本节点)都调用`write()`,而`minidom`在解析时会将原始XML中的换行和缩进当作`Text`节点处理,因此节点保留下来时,这些空白文本节点就会变成肉眼看得到的空白行。
如何让 writexml() 不输出多余空行
核心是绕过默认的格式化逻辑,手动控制换行与缩进。最可靠的做法是禁用自动换行,再用 toprettyxml() 的替代方案(因为它自带空行缺陷),或直接用字符串替换兜底:
- 传入
writexml(..., newl='', encoding='utf-8'),彻底关闭换行符注入 - 用
toxml()替代writexml()获取紧凑 XML 字符串,再按需加缩进(如用xml.dom.minidom.parseString().toprettyxml()后手工清理) - 若必须用
writexml(),需重写Document的writexml()方法,跳过所有仅含空白的Text节点
toxml() vs toprettyxml():哪个更可控
toxml() 输出无换行、无缩进的单行 XML,完全规避空行问题;toprettyxml() 表面美观,实则会在每个元素前后插入空行,且无法通过参数关闭——这是它设计上的硬伤。

