网易首页 > 网易号 > 正文 申请入驻

Python 库手册:xml.etree.ElementTree 处理 XML 数据模块

0
分享至

xml.etree.ElementTree(简称 ElementTree)是 Python 标准库中用于解析、创建和操作 XML 数据的模块。它提供了一种轻量、易用的方式来读取、修改和写入 XML 文件,适用于配置文件处理、数据交换、网络通信等应用场景。

常见应用场景:

(1)读取 XML 配置文件并提取参数。

(2)修改 XML 数据结构(如节点属性、内容)。

(3)创建新的 XML 文档并保存。

(4)从 Web API 获取的 XML 响应中提取数据。

(5)将对象数据结构序列化为 XML 格式进行存储。

◆ ◆

核心概念

1、Element 对象是 XML 的基本单位

每个节点都是一个 Element,包含标签名、属性、文本、子节点等信息。

2、ElementTree 是完整 XML 树的封装

ElementTree 对象可以从文件或字符串构建,也可用于将完整 XML 写出。

3、XPath 支持部分路径语法

可使用 .find()、.findall() 等方法进行节点查找,支持简化版 XPath 表达式。

4、支持双向操作:读取解析和创建写入

不仅能读取 XML,还能用 Element() 构造新的结构,并用 .write() 保存。

5、不支持复杂的 XML Schema 或命名空间解析

适用于中小型、结构清晰的 XML 数据处理任务。

◆ ◆

应用举例

例 1:读取 XML 文件并遍历节点

import xml.etree.ElementTree as ET

tree = ET.parse("catalog.xml")  # 加载 XML 文件
root = tree.getroot()  # 获取根节点

for child in root:
    print(child.tag, child.attrib)  # 输出标签名和属性字典

例 2:查找特定节点并读取内容

import xml.etree.ElementTree as ET

tree = ET.parse("catalog.xml")  # 加载 XML 文件
root = tree.getroot()  # 获取根节点

# 找到第一个名为 title 的子节点
item = root.find("./book/title")

if item is not None:

    print("内容:", item.text)

例 3:创建 XML 并写入文件

import xml.etree.ElementTree as ET

root = ET.Element("catalog")
book = ET.SubElement(root, "book", id="1")
title = ET.SubElement(book, "title")
title.text = "Python 入门"

tree = ET.ElementTree(root)
tree.write("catalog.xml", encoding="utf-8", xml_declaration=True)

例 4:从字符串解析 XML

import xml.etree.ElementTree as ET


xml_str = """ 张三 30 """
root = ET.fromstring(xml_str)
print("姓名:", root.find("name").text)

例 5:修改节点内容并保存

import xml.etree.ElementTree as ET

# 解析 XML 文件
tree = ET.parse("catalog.xml")
root = tree.getroot()

# 查找  节点(假设只有一个 节点)
title = root.find("./book/title")
if title is not None:
    title.text = "Python 从入门精通"  # 修改文本内容

    # 保存修改后的 XML 文件
    tree.write("catalog.xml", encoding="utf-8", xml_declaration=True)
else:
    print("未找到  节点")
◆ ◆ ◆ 常用函数速览 ET.parse(filename) 从文件中解析 XML 数据,并返回 ElementTree 对象。 参数: filename:XML 文件路径(字符串或类文件对象) 返回:ElementTree 对象 ET.fromstring(xml_string) 从字符串中解析 XML 数据,返回根元素。 参数:xml_string(str)—— XML 格式字符串 返回:根元素 Element 对象 ET.Element(tag, attrib={}) 创建一个新的 XML 元素节点。 参数: tag:标签名 attrib:可选的属性字典 返回:Element 对象 ET.SubElement(parent, tag, attrib={}) 在指定父元素下添加子元素。 参数: parent:父元素 tag:子元素标签名 attrib:属性字典 返回:子元素对象 Element.find(path) 查找第一个匹配 path 的子元素。 参数:path(str)—— XPath 表达式(简化) 返回:子元素 Element 或 None Element.findall(path) 查找所有匹配 path 的子元素。 参数:path(str)—— XPath 表达式(简化) 返回:包含多个 Element 的列表 Element.get(attr_name) 获取当前元素中指定属性的值。 参数:attr_name(str)—— 属性名 返回:属性值字符串,或 None Element.set(attr_name, value) 设置当前元素的属性值。 参数: attr_name:属性名 value:属性值(str) 返回:无 Element.text 获取或设置元素的文本内容。 类型:字符串属性 ElementTree.write(filename, encoding, xml_declaration=True) 将完整 XML 树写入文件。 参数: filename:目标文件名 encoding:如 "utf-8" xml_declaration:是否写入 声明 返回:无 ◆ ◆ ◆ 补充说明 1、XML 节点支持嵌套结构,Element 可看作树结构的节点。 2、标签名区分大小写,属性顺序无关紧要。 3、模块不支持 DTD 校验、XPath 的全功能或复杂命名空间处理,如有需要可使用第三方库 lxml。 “点赞有美意,赞赏是鼓励”

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
0-3!3-2!疯狂一夜,切尔西惨败,国米奇迹逆转,皇马2-1险胜

0-3!3-2!疯狂一夜,切尔西惨败,国米奇迹逆转,皇马2-1险胜

足球狗说
2026-04-22 05:40:02
伊朗表示同意暂停军事战斗,但战争仍未结束

伊朗表示同意暂停军事战斗,但战争仍未结束

界面新闻
2026-04-22 07:04:57
环保要求“一律关窗”,应急要求“一直开窗”,“工厂开窗还是关窗生产”惊动3部委

环保要求“一律关窗”,应急要求“一直开窗”,“工厂开窗还是关窗生产”惊动3部委

法律学堂
2026-04-21 00:06:18
NBA官方:亚历山大当选年度最佳关键球员 多项关键数据联盟第一

NBA官方:亚历山大当选年度最佳关键球员 多项关键数据联盟第一

罗说NBA
2026-04-22 06:18:26
郑丽文决心赴美,是两头下注还是真求和平?为什么赖清德怕了?

郑丽文决心赴美,是两头下注还是真求和平?为什么赖清德怕了?

近史博览
2026-04-22 02:05:10
罗翔:如果一个人突然努力工作,业余时间开始学习,不再参加社交活动,那么,身边的人可能不仅不会帮他,还会拉他下来,原因就一个!

罗翔:如果一个人突然努力工作,业余时间开始学习,不再参加社交活动,那么,身边的人可能不仅不会帮他,还会拉他下来,原因就一个!

谭老师地理大课堂
2026-04-22 00:03:57
马刺官宣:文班亚马脸部重摔地板 触发脑震荡保护协议提前退赛

马刺官宣:文班亚马脸部重摔地板 触发脑震荡保护协议提前退赛

醉卧浮生
2026-04-22 09:17:19
情侣在瑞士雪山顶“撒欢”,就这么被全世界直播了···

情侣在瑞士雪山顶“撒欢”,就这么被全世界直播了···

新欧洲
2026-04-21 19:37:05
李荣浩报平安“人没事,手机捞回来了,到家了”,网友:我还在下游等着捞手机呢

李荣浩报平安“人没事,手机捞回来了,到家了”,网友:我还在下游等着捞手机呢

潇湘晨报
2026-04-21 22:26:12
新秀王之蔑视?埃奇库姆登全美热搜!30+10+6三分创6纪录超魔术师

新秀王之蔑视?埃奇库姆登全美热搜!30+10+6三分创6纪录超魔术师

颜小白的篮球梦
2026-04-22 09:45:10
有些品牌的坏,是从娘胎里带出来的那种坏

有些品牌的坏,是从娘胎里带出来的那种坏

细雨中的呼喊
2026-04-21 21:19:33
老兵借厕所被拒后续!官方公布处理结果,保安被开除,老兵回应

老兵借厕所被拒后续!官方公布处理结果,保安被开除,老兵回应

180视角
2026-04-22 01:03:20
伊朗处决米尔贾法里

伊朗处决米尔贾法里

观察者网
2026-04-22 09:27:03
伊朗政坛大地震:革命卫队总司令强硬夺权……

伊朗政坛大地震:革命卫队总司令强硬夺权……

深度报
2026-04-21 21:19:56
网友称日本拉人力车的是骆驼祥子,但人家一小时要收费上千人民币

网友称日本拉人力车的是骆驼祥子,但人家一小时要收费上千人民币

映射生活的身影
2026-04-21 16:11:31
贵州网红晓浪哥去世,仅34岁,爱在墓地拍视频,早给自己选好墓地

贵州网红晓浪哥去世,仅34岁,爱在墓地拍视频,早给自己选好墓地

奇思妙想草叶君
2026-04-21 16:24:04
特斯拉Cybertruck国内首撞 网友:真是一点车漆都没掉

特斯拉Cybertruck国内首撞 网友:真是一点车漆都没掉

快科技
2026-04-20 18:05:06
网盘禁止传播存储国外影视剧,这意味着什么?

网盘禁止传播存储国外影视剧,这意味着什么?

十柱
2026-04-21 14:04:56
雷神山院长落马,最揪心的是无数女医护背后的家庭

雷神山院长落马,最揪心的是无数女医护背后的家庭

社会日日鲜
2026-04-21 08:34:40
5月1日起正式严打!8类灰色行为直接入刑,所有人务必警惕

5月1日起正式严打!8类灰色行为直接入刑,所有人务必警惕

另子维爱读史
2026-04-22 07:39:03
2026-04-22 12:31:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1826文章数 80关注度
往期回顾 全部

科技要闻

凌晨突发!ChatGPT Images 2.0发布

头条要闻

柬埔寨国王在京手术 洪森携子看望:感谢中方

头条要闻

柬埔寨国王在京手术 洪森携子看望:感谢中方

体育要闻

一到NBA季后赛,四届DPOY就成了主角

娱乐要闻

复婚无望!baby黄晓明陪小海绵零交流

财经要闻

伊朗拒绝出席 特朗普宣布延长停火期限

汽车要闻

四款全球首秀+AI落地 大众汽车集团在华转型全面提速

态度原创

健康
手机
游戏
亲子
军事航空

干细胞抗衰4大误区,90%的人都中招

手机要闻

REDMI K90 Max首销4小时夺冠!刷新近一年3K-4K新机纪录

魔兽世界:60版本最牌面的物理命中武器,谁才是你心中的天花板?

亲子要闻

影响心理健康的两种快乐因素:一旦失衡,孩子将会厌学抑郁

军事要闻

特朗普宣布延长停火 伊朗表态

无障碍浏览 进入关怀版