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

使用Python minidom编辑XML:如何在声明后添加换行符

解决XML声明后添加换行符的问题

问题背景

外部软件要求XML声明后必须带换行符,但使用minidom.writexml()生成的文件中,声明与根元素直接拼接,导致文件被拒绝。

原生解决方案(无需字符串切片拼接)

通过拆分XML声明与文档内容的写入操作,精准控制换行:

from xml.dom import minidom

# 解析模板并执行编辑操作
dat = minidom.parse('template.xml')
# ... 此处添加你的XML编辑逻辑

# 分步骤写入文件
with open("template_edited.xml", "w", encoding='UTF-8') as file:
    # 手动写入带换行的XML声明
    file.write('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n')
    # 写入根元素及子节点,避免重复输出声明
    dat.documentElement.writexml(file, indent='', addindent='', newl='')

原理说明

  • dat.documentElement获取XML根节点(如<Test_XML>),调用其writexml()方法仅输出节点内容,不会重复生成XML声明。
  • 手动写入带换行的声明,既满足外部软件的格式要求,又保留了XML操作的原生性。

替代方案(调整writexml参数)

如果需要保留整体换行格式,可调整writexml的参数控制换行与缩进:

from xml.dom import minidom

dat = minidom.parse('template.xml')
# ... 编辑逻辑

with open("template_edited.xml", "w", encoding='UTF-8') as file:
    dat.writexml(file, indent='', addindent=' ', newl='\n', encoding='UTF-8', standalone='yes')

注:此方案会在所有节点后添加换行,若需严格匹配原模板的缩进格式,需调整addindent的参数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:57:52