ElementTree 是 Python 标准库中轻量高效的 XML 解析与生成工具,支持快速加载、XPath 查找、动态修改及编码/命名空间处理。
Python 的 xml.etree.ElementTree(常简写为 ElementTree)是标准库中轻量、高效解析和生成 XML 的首选工具。它不依赖外部库,上手快,适合大多数日常 XML 处理任务。
用 ET.parse() 读取文件,或用 ET.fromstring() 解析字符串。根元素即返回的 Element 对象,可直接用属性和方法遍历子节点:
elem.tag:获取标签名(如 "book")
elem.text:获取开始标签和结束标签之间的文本内容elem.attrib:获取属性字典(如 {"id": "101"})for child in elem: 可直接迭代子元素ElementTree 支持有限但够用的 XPath 语法,比手动嵌套循环更清晰:
root.find("author"):找第一个直接子元素
root.findall(".//title"):找所有层级下的 (// 表示任意深度)root.findall('book[@category="fiction"]'):按属性筛选root.find('book/title').text:链式查找并取文本,注意加异常处理以防 NoneElementTree 不仅能读,还能动态改写:
立即学习“Python免费学习笔记(深入)”;
elem.text = "新标题"
elem.set("updated", "true")
new_elem = ET.SubElement(parent, "price");再设 new_elem.text = "29.99"
parent.remove(child)
tree.write("output.xml", encoding="utf-8", xml_declaration=True)
中文 XML 文件常因编码出错报 UnicodeDecodeError。推荐显式指定编码:
ET.parse("data.xml", parser=ET.XMLParser(encoding="utf-8"))
encoding="utf-8" 和 xml_declaration=True,避免乱码或缺失声明xmlns:ns="http://example.com")时,XPath 需传入命名空间映射字典:ns = {"ns": "http://example.com"}; root.find("ns:book", ns)
不复杂但容易忽略细节,掌握这四点就能覆盖绝大多数 XML 场景。