Python ElementTree库怎么用 ElementTree解析XML教程

16次阅读

ElementTree 是 python 标准库中轻量高效的 xml 解析与生成工具,支持快速加载、XPath 查找、动态修改及编码/命名空间处理。

Python ElementTree库怎么用 ElementTree解析XML教程

Python 的 xml.etree.ElementTree(常简写为 ElementTree)是标准库中轻量、高效解析和生成 XML 的首选工具。它不依赖外部库,上手快,适合大多数日常 XML 处理任务。

快速加载和遍历 XML

ET.parse() 读取文件,或用 ET.fromstring() 解析字符串。根元素即返回的 Element 对象,可直接用属性和方法遍历子节点:

  • elem.tag:获取标签名(如 "book"
  • elem.text:获取开始标签和结束标签之间的文本内容
  • elem.attrib:获取属性字典(如 {"id": "101"}
  • for child in elem: 可直接迭代子元素

用 XPath 简洁查找元素

ElementTree 支持有限但够用的 XPath 语法,比手动嵌套循环更清晰:

  • root.find("author"):找第一个直接子元素
  • root.findall(".//title"):找所有层级下的 // 表示任意深度)
  • root.findall('book[@category="fiction"]'):按属性筛选
  • root.find('book/title').text:链式查找并取文本,注意加异常处理以防 None

修改和构建 XML

ElementTree 不仅能读,还能动态改写:

立即学习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 场景。

text=ZqhQzanResources