如何使用Python xml.dom.minidom避免在写入XML文件时产生多余空行?

2026-04-30 20:230阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计732个文字,预计阅读时间需要3分钟。

如何使用Python xml.dom.minidom避免在写入XML文件时产生多余空行?

由于使用`writexml()`默认使用`newl='\n'`换行,并且对每个节点(包括文本节点)都调用`write()`,而`minidom`在解析时会将原始XML中的换行和缩进当作`Text`节点处理,因此节点保留下来时,这些空白文本节点就会变成肉眼看得到的空白行。

如何让 writexml() 不输出多余空行

核心是绕过默认的格式化逻辑,手动控制换行与缩进。最可靠的做法是禁用自动换行,再用 toprettyxml() 的替代方案(因为它自带空行缺陷),或直接用字符串替换兜底:

  • 传入 writexml(..., newl='', encoding='utf-8'),彻底关闭换行符注入
  • toxml() 替代 writexml() 获取紧凑 XML 字符串,再按需加缩进(如用 xml.dom.minidom.parseString().toprettyxml() 后手工清理)
  • 若必须用 writexml(),需重写 Documentwritexml() 方法,跳过所有仅含空白的 Text 节点

toxml() vs toprettyxml():哪个更可控

toxml() 输出无换行、无缩进的单行 XML,完全规避空行问题;toprettyxml() 表面美观,实则会在每个元素前后插入空行,且无法通过参数关闭——这是它设计上的硬伤。

阅读全文

本文共计732个文字,预计阅读时间需要3分钟。

如何使用Python xml.dom.minidom避免在写入XML文件时产生多余空行?

由于使用`writexml()`默认使用`newl='\n'`换行,并且对每个节点(包括文本节点)都调用`write()`,而`minidom`在解析时会将原始XML中的换行和缩进当作`Text`节点处理,因此节点保留下来时,这些空白文本节点就会变成肉眼看得到的空白行。

如何让 writexml() 不输出多余空行

核心是绕过默认的格式化逻辑,手动控制换行与缩进。最可靠的做法是禁用自动换行,再用 toprettyxml() 的替代方案(因为它自带空行缺陷),或直接用字符串替换兜底:

  • 传入 writexml(..., newl='', encoding='utf-8'),彻底关闭换行符注入
  • toxml() 替代 writexml() 获取紧凑 XML 字符串,再按需加缩进(如用 xml.dom.minidom.parseString().toprettyxml() 后手工清理)
  • 若必须用 writexml(),需重写 Documentwritexml() 方法,跳过所有仅含空白的 Text 节点

toxml() vs toprettyxml():哪个更可控

toxml() 输出无换行、无缩进的单行 XML,完全规避空行问题;toprettyxml() 表面美观,实则会在每个元素前后插入空行,且无法通过参数关闭——这是它设计上的硬伤。

阅读全文