Python怎么遍历一个XML树的所有节点_Python遍历XML树节点与子节点教程

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

Python怎么遍历一个XML树的所有节点_Python遍历XML树节点与子节点教程

python遍历XML树的所有节点

在Python中处理XML数据时,经常需要遍历整个XML树,访问每一个节点和子节点。最常用的方法是使用内置的 xml.etree.ElementTree 模块。它轻量、易用,并能高效地解析和操作XML结构。

1. 基本XML结构示例

假设我们有如下XML文件(命名为 example.xml):

<?xml version="1.0"?> <root>     <person id="1">         <name>Alice</name>         <age>25</age>         <city>Beijing</city>     </person>     <person id="2">         <name>Bob</name>         <age>30</age>         <city>Shanghai</city>     </person>     <info>         <total>2 people</total>     </info> </root> 

2. 使用ElementTree解析XML

先加载XML文件并获取根节点:

立即学习Python免费学习笔记(深入)”;

import xml.etree.ElementTree as ET

tree = ET.parse(‘example.xml’) root = tree.getroot()

此时 root 就是XML树的根节点,我们可以从它开始遍历所有子节点。

3. 遍历所有节点的几种方法

方法一:递归遍历所有节点
通过递归函数访问每个节点及其子节点:

def traverse_tree(node): print(f’标签: {node.tag}, 文本: {node.text.strip() if node.text else “”}, 属性: {node.attrib}’) for child in node: traverse_tree(child)

调用

traverse_tree(root)

输出会显示每个节点的标签名、文本内容(去除空格)和属性字典。

Python怎么遍历一个XML树的所有节点_Python遍历XML树节点与子节点教程

闪光简历

一款专业的智能AI简历制作工具

Python怎么遍历一个XML树的所有节点_Python遍历XML树节点与子节点教程25

查看详情 Python怎么遍历一个XML树的所有节点_Python遍历XML树节点与子节点教程

方法二:使用iter()方法遍历指定标签或所有节点
iter() 方法可以遍历所有后代节点,支持过滤标签名。

# 遍历所有节点 for elem in root.iter(): print(f'{elem.tag}: {elem.text.strip() if elem.text else “”}’)

或只遍历特定标签,如所有 ‘name’ 节点

for name_elem in root.iter(‘name’): print(f’Name: {name_elem.text}’)

这种方法更简洁,适合快速提取某一类信息。

方法三:逐层遍历(适用于结构清晰的XML)
如果知道层级结构,可以直接用循环访问子节点:

for child in root: print(f’父节点: {child.tag}’) for sub_child in child: print(f’ 子节点: {sub_child.tag} = {sub_child.text}’)

这种方式适合处理格式固定的XML,比如配置文件或标准数据交换格式。

4. 获取节点详细信息

在遍历时,常需提取以下信息:

  • 标签名: node.tag
  • 文本内容: node.text(注意可能为None)
  • 属性: node.attrib(返回字典)
  • 子节点数量: len(node)

例如打印每个 person 的ID和姓名:

for person in root.findall(‘person’): pid = person.get(‘id’) name = person.find(‘name’).text print(f’ID: {pid}, Name: {name}’)

基本上就这些。掌握这几种方式后,就能灵活应对各种XML遍历需求。

上一篇
下一篇
text=ZqhQzanResources