Python解析XML最常用方式是标准库xml.etree.ElementTree(ET),支持文件/字符串加载、元素遍历查找、属性文本获取、修改保存,轻量且无需额外安装。

Python 解析 XML 文件最常用、最轻量的方式就是用标准库里的 xml.etree.ElementTree(常简写为 ET)。它简单直接,适合大多数日常解析需求,不需要额外安装包。
加载 XML 数据:从文件或字符串开始
ElementTree 支持从文件路径读取,也支持解析字符串内容:
- 从文件加载:
tree = ET.parse('data.xml'),返回ElementTree对象,再用tree.getroot()获取根元素 - 从字符串解析:
root = ET.fromstring(xml_string),直接返回根Element
注意:如果 XML 编码不是 UTF-8,且文件里没声明编码(如 ),用 parse() 可能报错,这时建议先用 open(..., encoding='gbk') 读成字符串再传给 fromstring()。
遍历和查找元素:用 tag、find、findall 和 iter
每个 Element 就是一个节点,有 tag(标签名)、text(开始标签和子节点之间的文本)、tail(子节点之后的文本)等属性。
立即学习“Python免费学习笔记(深入)”;
-
root.tag得到根标签名,root.text是根的直接文本(通常为空) -
root.find('book')找第一个匹配的直接子节点;root.findall('book')找所有直接子节点 -
root.iter('author')深度优先遍历整棵树,找出所有名为author的节点(不限层级) - 支持 XPath 简化写法,比如
root.find('.//title')表示找任意层级下的第一个title
获取属性和文本内容:别漏掉 get() 和 text
XML 元素的属性(如 )要通过 .get('id') 或 .attrib['id'] 获取;文本内容则用 .text(注意:它不包含子元素内的文本)。
-
elem.get('id', 'default')安全获取属性,缺失时返回默认值 - 如果想提取完整文本(含子元素内容),可用
ET.tostring(elem, encoding='unicode', method='text'),但一般推荐手动拼接或用elem.itertext() -
list(elem.itertext())返回生成器,可遍历所有文本片段(包括子节点中的)
修改和保存 XML:边改边写
ElementTree 不仅能读,还能改写。修改后调用 tree.write() 保存回文件:
- 增:
new_elem = ET.SubElement(parent, 'price')创建子节点 - 删:
parent.remove(child)或del parent[i] - 改:
elem.text = 'new value',elem.set('id', '202') - 保存时加参数
encoding='utf-8', xml_declaration=True,避免乱码和缺少 XML 声明
基本上就这些 —— 不复杂但容易忽略细节,比如 text 和 tail 的区别、属性获取的安全写法、以及中文编码处理。用熟了,解析配置、日志、简单数据交换都够用。










