0

0

使用 Python ElementTree 库高效提取 XML 标签属性列表

聖光之護

聖光之護

发布时间:2025-10-14 09:00:14

|

601人浏览过

|

来源于php中文网

原创

使用 Python ElementTree 库高效提取 XML 标签属性列表

本文详细介绍了如何使用 python 标准库 `xml.etree.elementtree` 解析 xml 文件,并从特定标签(如 `sourcefield`)中提取所有属性,将其组织成一个 python 字典列表。教程涵盖了 xml 文件加载、元素遍历、属性访问以及最终数据结构的构建,旨在提供一个清晰、专业的解决方案,帮助开发者高效处理 xml 数据。

XML 属性提取概述

在数据处理和系统集成中,XML 是一种常见的数据交换格式。有时,我们需要从 XML 文件中提取特定元素的属性信息,并将其整理成易于在 Python 中操作的数据结构,例如字典列表。Python 的 xml.etree.ElementTree 模块提供了一个轻量级且高效的 API 来实现这一目标。

本教程将演示如何解析一个包含嵌套标签的 XML 文件,并从中定位到特定的 SOURCEFIELD 标签,然后将其所有属性收集到一个列表中,其中每个标签的属性都表示为一个字典。

使用 ElementTree 解析 XML 文件

首先,我们需要导入 xml.etree.ElementTree 模块,并加载目标 XML 文件。

import xml.etree.ElementTree as ET
import os # 用于路径操作和文件存在性检查

# 定义 XML 文件路径
xml_file_path = 'C:\\Users\\dd00849401\\Desktop\\xml\\m_DM_DIM_NRC_CUSTOMER.xml'

# 检查文件是否存在
if not os.path.exists(xml_file_path):
    print(f"错误:文件 '{xml_file_path}' 不存在。")
    exit()

try:
    # 解析 XML 文件
    tree = ET.parse(xml_file_path)
    # 获取 XML 文件的根元素
    root = tree.getroot()
    print("XML 文件加载成功。")
except ET.ParseError as e:
    print(f"错误:XML 文件解析失败 - {e}")
    exit()
except Exception as e:
    print(f"发生未知错误:{e}")
    exit()

上述代码首先检查文件路径的有效性,然后尝试解析 XML 文件并获取其根元素。这是所有后续操作的基础。

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

寻鲸AI
寻鲸AI

寻鲸AI是一款功能强大的人工智能写作工具,支持对话提问、内置多场景写作模板如写作辅助类、营销推广类等,更能一键写作各类策划方案。

下载

遍历元素并提取属性

要从特定标签(如 SOURCEFIELD)中提取属性,我们需要遍历 XML 树。ElementTree 提供了 iter() 方法,可以递归地遍历当前元素及其所有子孙元素,查找指定标签。

关键在于,我们需要在遍历 SOURCEFIELD 标签时,将其属性字典收集到一个预先定义好的空列表中。

# 初始化一个空列表,用于存储所有 SOURCEFIELD 标签的属性
sourcefields_attributes = []

print("\n*********** 正在提取 SOURCE 详细信息 ***********")

# 遍历所有 'SOURCE' 标签
for source in root.iter('SOURCE'):
    # 获取 SOURCE 标签的 NAME 属性
    sourcename = source.attrib.get('NAME', '未知来源') # 使用 .get() 避免键不存在时报错
    print(f"\n来源名称: {sourcename}")
    print(f"*********** 来源 '{sourcename}' 的详细属性: ***********")
    print(source.attrib)

    print(f"*********** 来源 '{sourcename}' 的字段列属性: ***********")
    # 遍历当前 SOURCE 标签下的所有 'SOURCEFIELD' 标签
    for sourcefield in source.iter("SOURCEFIELD"):
        # 打印当前 SOURCEFIELD 标签的属性
        print(sourcefield.attrib)
        # 将当前 SOURCEFIELD 标签的所有属性(字典形式)添加到列表中
        sourcefields_attributes.append(sourcefield.attrib)

# 打印最终收集到的所有 SOURCEFIELD 属性列表
print("\n*********** 所有 SOURCEFIELD 属性的最终列表 ***********")
print(sourcefields_attributes)

代码解析与注意事项

  1. sourcefields_attributes = []: 这是核心。在任何循环之外初始化一个空列表,确保每次运行程序时都是从一个干净的列表开始收集数据。
  2. root.iter('SOURCE'): 这个方法用于迭代 XML 树中所有名为 SOURCE 的元素。iter() 是一个生成器,可以高效地处理大型 XML 文件。
  3. source.attrib: 对于任何 Element 对象(如 source 或 sourcefield),attrib 属性是一个字典,包含了该元素的所有属性名和属性值。
  4. source.attrib.get('NAME', '未知来源'): 使用字典的 get() 方法来访问属性是一个良好的实践。如果属性不存在,它会返回 None 或你指定的默认值(这里是 '未知来源'),而不是抛出 KeyError。
  5. sourcefields_attributes.append(sourcefield.attrib): 在内层循环中,每次找到一个 SOURCEFIELD 元素时,我们将其 attrib 字典直接添加到 sourcefields_attributes 列表中。这样,列表的每个元素都是一个字典,代表一个 SOURCEFIELD 标签的属性集。

预期输出示例

根据上述代码,如果 XML 文件包含多个 SOURCEFIELD 标签,最终 sourcefields_attributes 列表的结构将如下所示:

[{'BUSINESSNAME': '', 'DATATYPE': 'varchar', 'DESCRIPTION': '', 'FIELDNUMBER': '1'},
 {'BUSINESSNAME': '', 'DATATYPE': 'numeric', 'DESCRIPTION': '', 'FIELDNUMBER': '2'},
 {'BUSINESSNAME': '', 'DATATYPE': 'timestamp', 'DESCRIPTION': '', 'FIELDNUMBER': '3'}]

总结

通过 xml.etree.ElementTree 模块,我们可以轻松地解析 XML 文件并提取所需的属性信息。关键在于理解 ET.parse()、element.iter() 和 element.attrib 的用法,并利用 Python 列表的 append() 方法将提取到的数据组织成一个方便后续处理的字典列表。这种方法不仅高效,而且代码简洁,是处理 XML 数据时常用的专业实践。在实际应用中,还应考虑更全面的错误处理和数据验证机制。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

778

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

685

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

769

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

739

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1445

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

571

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

580

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

751

2023.08.11

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

1

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 21.8万人学习

Django 教程
Django 教程

共28课时 | 3.5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号