Python3 XML解析

XML (可扩展标记语言) 是一种用于存储和传输数据的标记语言。它被设计为自我描述且易于人类阅读和编写。在处理 XML 数据时,Python 提供了多种库来简化这一过程,比如 xml.etree.ElementTreelxmlxml.dom.minidom 等。

XML 文件格式基础

一个简单的 XML 文档看起来像这样:

-- -------------------- ---- -------
----- ---------------
---------
   ----- -----------
      -------------------- ----------------
      ---------- ----------- -------------
      -----------------------
      --------------------
      ---------------------------------------
      --------------- -------- ---- -- -------- ------------ 
      ---- ------------------
   -------
----------

这个例子展示了几个关键点:

  • XML 文档以 <?xml version="1.0"?> 开头,表明这是一个 XML 文档。
  • 每个元素由开始标签 <tag> 和结束标签 </tag> 包围。
  • 元素可以包含文本内容或子元素。
  • 属性可以在开始标签中指定,如 <book id="bk101">

使用 xml.etree.ElementTree 模块

ElementTree 是 Python 的标准库之一,它提供了一种简单的方式来解析和创建 XML 数据。

解析 XML 文件

首先,我们来看如何使用 ElementTree 解析一个 XML 文件:

这段代码首先导入了 xml.etree.ElementTree 模块,并给它起了一个别名 ET。然后使用 ET.parse() 方法加载 XML 文件并返回一个树形结构的对象。通过调用 getroot() 方法获取文档的根元素,最后遍历根元素的所有子元素并打印它们的标签名和属性。

创建 XML 文件

创建 XML 文件同样简单:

-- -------------------- ---- -------
---- --------------------- ------ -------- ----------- --------

------- - ------------------
---- - ------------------- ------- ------------- ---------
---------------- -------------- - -------- ----
---------------- ------------- - ------ ----------
---------------- ------------- - ---------
---------------- ------------- - ------
---------------- -------------------- - ------------
---------------- ------------------- - -------- ----- ----- -------

-------- - -----------------
------------------------

这里我们创建了一个新的 catalog 元素作为根元素,并在其下添加了一个 book 子元素。通过 SubElement 函数可以方便地添加子元素和设置文本内容。最后使用 tostring() 将整个元素树转换为字符串表示形式。

使用 lxml 库进行更复杂的操作

虽然 ElementTree 已经非常强大,但 lxml 库提供了更多功能,例如 XPath 支持,这使得查找特定节点变得更加容易。

安装 lxml

要使用 lxml,你需要先安装它:

使用 XPath 查询

XPath 是一种在 XML 文档中查找信息的语言。lxml 支持 XPath 表达式,可以让你轻松地从复杂的 XML 结构中提取所需的数据。

-- -------------------- ---- -------
---- ---- ------ -----

---- - ------------------------
---- - --------------

- ---- ----- - ---------- - ----
-------------- - --------------------------------------
--- ---- -- ---------------
    ------------------------------

这段代码使用 XPath 表达式 //book[genre='Computer'] 来查找所有 genre 属性值为 "Computer" 的 book 元素,并输出这些元素下的 title 子元素的文本内容。

总结

通过本章的学习,你应该已经掌握了基本的 XML 解析技巧,包括使用 ElementTreelxml 库进行文件读写以及数据查询。在实际应用中,你可以根据需要选择合适的工具和技术来处理 XML 数据。

上一篇: Python3 多线程
纠错
反馈