在Python中读写XML文件

2025年1月5日 | 阅读 7 分钟

引言

在本教程中,我们将学习如何在 Python 中读写 XML 文件。XML 或可扩展标记语言是一种特殊的语言,旨在易于人类和计算机解析。一种语言描述了以特定格式编码数据的过程。XML 文件广泛用于许多计算机之间的数据通信。Python 附带各种内置库来处理和操作 XML 文件。本教程解释了如何在 Python 中读写 XML 文件。

通常,从 XML 文件读取数据并分析其内容的过程称为解析。所以,当我们说读取 XML 文件时,我们是指解析 XML 文件。在本教程中,我们将介绍两个可用于 XML 解析的库,它们如下:

  1. 使用 BeautifulSoup 和 lxml 解析器
  2. 使用 Elementtree 库

现在我们在下面学习这两个库:

1. 使用 BeautifulSoup 和 lxml 解析器

我们将使用 BeautifulSoup Python 库来读写 XML 文件。在终端中键入以下命令来安装该库。

Beautiful Soup 支持 Python 标准库中包含的 HTML 解析器,但它也支持许多第三方 Python 解析器。其中之一是 lxml 解析器(用于解析 XML 或 HTML 文件)。可以通过在系统上运行以下命令来安装 lxml:

首先,我们将学习如何读取 XML 文件。我们还将分析其中存储的数据。接下来,我们将学习如何创建一个 XML 文件并向其中写入信息。

在 Python 中读取 XML 文件

解析 XML 文件需要两个步骤,如下所示:

  1. 查找标签
  2. 从标签中提取

程序代码

在此,我们提供了一个程序代码,用于在 Python 中使用 BeautifulSoup 和 lxml 解析器来解析或读取 XML 文件。代码如下:

输出

现在,我们运行上述代码并从中找到输出。输出如下:

[<unique>

   Add a video URL in here

  </unique>, <unique>

   Add a workbook URL here

 </unique>]

<child name="Frank" test="0">

    FRANK likes EVERYONE

  </child>

0

在 Python 中写入 XML 文件

写入 XML 文件是一个重要的过程,因为它不是以特殊方式编码的。要更改 XML 文件的各种方面,首先需要进行解析。在下面的代码中,我们将替换上面的一些 XML 文件。

程序代码

在此,我们提供了一个程序代码,用于在 Python 中使用 BeautifulSoup 和 lxml 解析器来解析或写入 XML 文件。代码如下:

输出

现在,我们运行上述代码并从中找到输出。输出如下:

[<unique>

   Add a video URL in here

  </unique>, <unique>

   Add a workbook URL here

 </unique>]

<child name="Frank" test="0">

    FRANK likes EVERYONE

  </child>

0

在 Python 中写入 XML 文件

写入 XML 文件是一个重要的过程,因为它不是以特殊方式编码的。要更改 XML 文件的各种方面,首先需要进行解析。在下面的代码中,我们将替换上面的一些 XML 文件。

程序代码

在此,我们提供了一个程序代码,用于在 Python 中使用 BeautifulSoup 和 lxml 解析器来解析或写入 XML 文件。代码如下:

输出

现在我们运行上述代码并从中找到输出。输出如下:

<?xml version="1.0" encoding="utf-8"?>
<saranghe>
   <child name="Frank" test=" Hello"> 
     FRANK likes EVERYONE
   </child>
   <unique>
     Add a video URL in here
   </unique>
   <child name="Texas" test="1">
     TEXAS is a PLACE
   </child>
   <child name="Frank" test=" Hello"> 
     Exclusively
   </child>
   <unique>
     Add a workbook URL here
   </unique>
   <data>
     Add the content of your article here
     <family>
       Add the font family of your text here
     </family>
     <size>
       Add the font size of your text here
     </size>
  </data>
</saranghe>

2. 使用 Elementtree 库

Elementtree 模块为我们提供了许多处理 XML 文件的工具。最好的部分是它包含了 Python 的标准内置库。因此,您无需为此目的安装任何外部模块。由于 XML 是一种分层文件,因此可以更轻松地将其表示为树。该模型提供的 ElementTree 提供了一种将整个 XML 文档表示为树的方法。

在下面的示例中,我们将查看从 XML 文件读取数据和向 XML 文件写入数据的离散方法。

在 Python 中读取 XML 文件

要使用 ElementTree 读取 XML 文件,我们首先使用名称 E 从 xml 库中导入 ElementTree 类。然后将 XML 文件名传递给 ElementTree.parse() 方法以启用 XML 文件的解析。然后,使用 getroot() 函数获取 XML 文件的根(父标签)。然后,查看(打印)我们 XML 文件的根标签(不清楚)。然后,使用 r[0].attrib 显示父标签或子标签的属性。r[0] 用于获取父根的初始标签,attrib 用于获取其属性。我们将显示根标签的第五个子标签的第一个子标签中的文本。

程序代码

在此,我们提供了一个程序代码,用于在 Python 中使用 Elementtree 库来解析或读取 XML 文件。代码如下:

输出

现在,我们运行上述代码并从中找到输出。输出如下:

<Element 'saranghe' at 0x7fe97c2cee08>
{'name': 'Frank', 'test': '0'}
    Add the font family of your text here

在 Python 中写入 XML 文件

现在,让我们看一下向 XML 文件写入数据的一些方法。在此示例中,我们将从头开始创建一个 XML 文件。

同样,我们首先使用 E.Element('chess') 命令创建一个名为 chess 的根标签(父标签)。所有标签都将在此标签下,因此一旦定义了根标签,就可以在此下创建其他子元素。然后我们使用 E.SubElement() 创建一个名为 chess tag 的子标签或子元素。然后,我们创建另外两个子标签,分别命名为 E4 和 D4 open tags。然后,我们使用 set() 方法向 E4 和 D4 标签添加新属性。set() 是一个用于检查 SubElement() 中标签属性的方法。

我们将使用 SubElement 函数中的 text 属性在 E4 和 D4 标签之间添加文本。最后,我们使用 E.tostring() 将我们创建的元素的内容从“xml.etree.ElementTree.Element”转换为字节对象以供使用(尽管有时函数名是 tostring())。它被写成“bytes”而不是“str”。最后,我们将文件导出到名为 gameofsquares.xml 的文件中,该文件以“wb”模式打开以允许写入二进制文件。最后,我们将数据保存到我们的文件中。

程序代码

在此,我们提供了一个程序代码,用于在 Python 中使用 Elementtree 库来编写 XML 文件。代码如下:

输出

现在,我们运行上述代码并从中找到输出。输出如下:

<chess><Opening><E4 type="Accepted">Hello Coders</E4><D4
type="Declined">Welcome to javatpoint</ D4></Opening></chess>