Python怎么解析XML文件 ElementTree使用方法

16次阅读

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

Python怎么解析XML文件 ElementTree使用方法

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 声明

基本上就这些 —— 不复杂但容易忽略细节,比如 texttail区别、属性获取的安全写法、以及中文编码处理。用熟了,解析配置、日志、简单数据交换都够用。

text=ZqhQzanResources