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

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










