Python怎么修改XML文件 Python更新XML节点内容

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)