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

