答案:使用xml.etree.ElementTree模块可高效遍历XML树。首先通过ET.parse()加载XML并获取根节点,然后利用递归函数、iter()方法或逐层循环遍历所有节点;其中iter()支持过滤特定标签,findall()和find()可用于提取指定元素的属性与文本内容,适用于不同结构场景。

Python遍历XML树的所有节点
在Python中处理XML数据时,经常需要遍历整个XML树,访问每一个节点和子节点。最常用的方法是使用内置的 xml.etree.ElementTree 模块。它轻量、易用,并能高效地解析和操作XML结构。
1. 基本XML结构示例
假设我们有如下XML文件(命名为 example.xml):
Alice 25 Beijing Bob 30 Shanghai 2 people
2. 使用ElementTree解析XML
先加载XML文件并获取根节点:
立即学习“Python免费学习笔记(深入)”;
import xml.etree.ElementTree as ETtree = ET.parse('example.xml') root = tree.getroot()
此时 root 就是XML树的根节点,我们可以从它开始遍历所有子节点。
3. 遍历所有节点的几种方法
方法一:递归遍历所有节点
通过递归函数访问每个节点及其子节点:
调用
traverse_tree(root)
输出会显示每个节点的标签名、文本内容(去除空格)和属性字典。
方法二:使用iter()方法遍历指定标签或所有节点iter() 方法可以遍历所有后代节点,支持过滤标签名。
或只遍历特定标签,如所有 'name' 节点
for name_elem in root.iter('name'): print(f'Name: {name_elem.text}')
这种方法更简洁,适合快速提取某一类信息。
方法三:逐层遍历(适用于结构清晰的XML)
如果知道层级结构,可以直接用循环访问子节点:
这种方式适合处理格式固定的XML,比如配置文件或标准数据交换格式。
4. 获取节点详细信息
在遍历时,常需提取以下信息:
-
标签名:
node.tag -
文本内容:
node.text(注意可能为None) -
属性:
node.attrib(返回字典) -
子节点数量:
len(node)
例如打印每个 person 的ID和姓名:
基本上就这些。掌握这几种方式后,就能灵活应对各种XML遍历需求。










