用xml.etree.ElementTree修改并保存XML需三步:解析(ET.parse)、内存中增删改查、write()保存;务必指定encoding="utf-8"、xml_declaration=True,Python 3.9+可调用ET.indent()美化缩进。

用 Python 的 xml.etree.ElementTree 修改并保存 XML 文件很简单,核心是:先解析(ET.parse()),再在内存中修改元素或属性,最后写回文件(tree.write())。注意编码和格式细节,否则容易出乱码或缩进丢失。
加载并修改 XML 内容
用 ET.parse() 读取文件生成 ElementTree 对象,通过 .getroot() 获取根节点,之后就能增删改查:
- 修改文本:
elem.text = "新内容" - 修改属性:
elem.set("name", "value")或直接elem.attrib["name"] = "value" - 添加子元素:
ET.SubElement(parent, "tag", attrib={...}) - 删除子元素:
parent.remove(child) - 查找元素:
root.find(".//item")或root.findall("book")
保存时注意编码和换行
tree.write() 默认用 ASCII 编码且不带 XML 声明,中文会报错,也不易读。推荐这样保存:
- 指定
encoding="utf-8"和xml_declaration=True - 加
method="xml"(默认就是 xml,但显式写更稳妥) - 如需缩进(Python 3.9+),可调用
ET.indent(tree)再保存
示例:ET.indent(tree) # 可选,美化输出tree.write("output.xml", encoding="utf-8", xml_declaration=True)
立即学习“Python免费学习笔记(深入)”;
完整修改保存示例
比如把 config.xml 中所有 的值改成 8080,并保存回原文件:
import xml.etree.ElementTree as ETtree = ET.parse("config.xml")root = tree.getroot()for port in root.iter("port"):
port.text = "8080"ET.indent(tree)tree.write("config.xml", encoding="utf-8", xml_declaration=True)
基本上就这些。关键不是语法多难,而是别忘了设编码、加声明、必要时缩进——不然文件可能打不开或显示异常。










