使用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
相关产品推荐
相关产品推荐

