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

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 文件并遍历节点

python 复制代码
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:查找特定节点并读取内容

python 复制代码
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 并写入文件

makefile 复制代码
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

python 复制代码
import xml.etree.ElementTree as ET

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

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

python 复制代码
import xml.etree.ElementTree as ET
# 解析 XML 文件tree = ET.parse("catalog.xml")root = tree.getroot()
# 查找 <title> 节点(假设只有一个 <book> 节点)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("未找到 <title> 节点")

◆ ◆

常用函数速览

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:是否写入 <?xml ... ?> 声明

返回:无

◆ ◆

补充说明

1、XML 节点支持嵌套结构,Element 可看作树结构的节点。

2、标签名区分大小写,属性顺序无关紧要。

3、模块不支持 DTD 校验、XPath 的全功能或复杂命名空间处理,如有需要可使用第三方库 lxml。

"点赞有美意,赞赏是鼓励"

相关推荐
pr_note17 小时前
python|if判断语法对比
python
liangshanbo121518 小时前
写好 React useEffect 的终极指南
前端·javascript·react.js
apocelipes19 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
Geoking.20 小时前
NumPy zeros() 函数详解
python·numpy
Full Stack Developme20 小时前
java.text 包详解
java·开发语言·python
哆啦A梦158820 小时前
搜索页面布局
前端·vue.js·node.js
_院长大人_21 小时前
el-table-column show-overflow-tooltip 只能显示纯文本,无法渲染 <p> 标签
前端·javascript·vue.js
刘梦凡呀21 小时前
C#获取钉钉平台考勤记录
java·c#·钉钉
盒马coding21 小时前
第19节-非规范化数据类型-Composite-types
数据库·postgresql
丁浩66621 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习