Python修改XML文件主要用xml.etree.ElementTree,流程为解析→定位→修改→保存;可改.text、.attrib,用.append()等增删子节点,借助minidom可美化格式。

Python修改XML文件主要用xml.etree.ElementTree(标准库,无需安装),它支持读取、查找、修改和写回XML。关键在于:先解析文档 → 定位目标节点 → 修改其文本、属性或子元素 → 保存回文件。
定位并修改节点的文本内容
使用find()、findall()或xpath(需etree,但标准ElementTree只支持有限XPath)查找节点,再改.text属性。
- 示例:把所有
标签的内容改为"张三"
import xml.etree.ElementTree as ET
tree = ET.parse("data.xml")
root = tree.getroot()
for name_elem in root.findall(".//name"): # 查找任意层级的name
name_elem.text = "张三"
tree.write("data.xml", encoding="utf-8", xml_declaration=True)
修改节点的属性值
节点的属性以字典形式存于.attrib中,直接赋值即可更新。
- 示例:将
的id改为"205"
user = root.find("user")
if user is not None:
user.set("id", "205") # 推荐方式,自动处理不存在的属性
# 或 user.attrib["id"] = "205"
添加、删除或替换子节点
用.append()、.remove()、.insert()操作子元素;用ET.SubElement()快速创建并追加新节点。
- 示例:给第一个
添加test@example.com
标准person = root.find("person")
if person is not None:
email = ET.SubElement(person, "email")
email.text = "test@example.com"保存时保留格式(缩进与换行)
ElementTree默认不带缩进。如需可读性,可用xml.dom.minidom美化,或手动添加换行和空格。import xml.dom.minidom
rough_string = ET.tostring(root, encoding="utf-8")
reparsed = xml.dom.minidom.parseString(rough_string)
pretty_xml = reparsed.toprettyxml(indent=" ")
with open("data.xml", "w", encoding="utf-8") as f:
f.write(pretty_xml)










