ElementTree是Python标准库中轻量易用的XML解析模块,适合结构清晰、规模适中的XML处理;支持文件/字符串加载、树遍历、XPath查找、属性与文本读取及XML构建写入。

Python 的 ElementTree 是标准库中轻量、易用的 XML 解析模块,适合处理结构清晰、规模适中的 XML 数据。它不追求完全符合 XML 规范(比如不支持 DTD 或命名空间高级特性),但对日常读写、遍历、修改 XML 足够高效直观。
加载和解析 XML
可以用字符串或文件路径创建根元素。推荐用 ET.parse() 读文件,ET.fromstring() 解析字符串:
-
从文件加载:
tree = ET.parse('data.xml'); root = tree.getroot() -
从字符串解析:
root = ET.fromstring(' ')Python
注意:parse() 返回 ElementTree 对象,需调用 getroot() 获取根元素;fromstring() 直接返回根元素 Element。
遍历和查找元素
每个 Element 像树节点,支持迭代子节点、按标签名查找、XPath 简化语法:
立即学习“Python免费学习笔记(深入)”;
-
直接子元素遍历:
for child in root:遍历一级子节点 -
按标签名找所有匹配:
root.findall('author')(只查直接子级) -
深度查找任意层级:
root.findall('.//section/title')(支持简单 XPath) -
找第一个匹配:
root.find('price')(返回 Element 或 None)
读取元素内容和属性
元素的文本内容在 .text 属性中,尾部空白(.tail)一般可忽略;属性用字典方式访问:
-
获取文本:
title_elem.text→ 如"Learning Python" -
获取属性:
elem.get('id')(安全,不存在时返回 None)或elem.attrib['id'](可能报 KeyError) -
完整示例:
→Fluent Python book.get('id')得"101",book.find('name').text得"Fluent Python"
构建和写入 XML
用 ET.Element() 和 ET.SubElement() 创建结构,最后用 tree.write() 保存:
-
新建根节点:
root = ET.Element('library') -
添加子节点:
book = ET.SubElement(root, 'book', attrib={'id': '102'}) -
设置文本:
ET.SubElement(book, 'title').text = 'Effective Python' -
保存为文件:
tree = ET.ElementTree(root); tree.write('output.xml', encoding='utf-8', xml_declaration=True)
写入时建议加 xml_declaration=True 输出标准 XML 声明行。










