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

如何使用xml.etree.ElementTree保留读取文件中的XML声明

如何保留XML文件原有的完整声明信息?

我在处理XML文件时,读取原文件并添加部分标签后重新写入,发现原文件的完整XML声明<?xml version="1.0" encoding="UTF-8" standalone="yes"?>被简化成了<?xml version="1.0" ?>,原处理代码如下:

import os
from xml.dom import minidom
import xml.etree.ElementTree as ET

tree = ET.parse(xml_file)
root = tree.getroot()
access = ""

# ... (其余处理逻辑)

# 写入临时字符串以控制缩进
rough_string = ET.tostring(root, 'utf-8')
reparsed = minidom.parseString(rough_string)

# 将格式化后的XML写入原文件,去除空行和版本信息
with open(xml_file, 'w', encoding='utf-8') as f:
    for line in reparsed.toprettyxml(indent="  ").splitlines():
        if line.strip():
            f.write(line + '\n')

后来我通过手动添加原声明行的方式解决了这个问题,修改后的代码如下:

with open(xml_file, 'w', encoding='utf-8') as f:
    custom_line = '<?xml version="1.0" encoding="UTF-8"  standalone="yes"?>'
    f.write(custom_line + '\n')
    for line in reparsed.toprettyxml(indent="  ").splitlines():
        if line.strip() and not line.startswith('<?xml'):
            f.write(line + '\n')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:09:52