摘要: 我们经常需要解析用不同语言编写的数据。Python 提供了许多库来解析或拆分用其他语言编写的数据。在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML。
本文分享自华为云社区《从零开始学python| 如何在 Python 中解析和修改 XML?》,原文作者:Yuchuan。我们经常需要解析用不同语言编写的数据。Python 提供了许多库来解析或拆分用其他语言编写的数据。在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML。以下是本教程中涵盖的所有主题:Whatis XML?Python XML Parsing Modulesxml.etree.ElementTree Module
Usingparse() function
Usingfromstring() function
FindingElements of Interest
ModifyingXML files
Addingto XML
Deletingfrom XML
xml.dom.minidomModule
Usingparse() function
UsingfromString() function
FindingElements of Interest
让我们开始吧。:)什么是 XML?
XML 代表可扩展标记语言。它在外观上类似于 HTML,但 XML 用于数据表示,而 HTML 用于定义正在使用的数据。XML 专门设计用于在客户端和服务器之间来回发送和接收数据。看看下面的例子:例子:
Idly $2.5 两个 idly's with chutney
< /description>
553 Paper Dosa $2.7 <
700 Upma $3.65 Rava upma with bajji
600 Bisi Bele Bath $4.50 Bisi Bele Bath with sev
400 Kesari Bath $1.95 藏红花甜拉瓦
950
上面的示例显示了我命名为“Sample.xml”的文件的内容,我将在此 Python XML 解析器教程中为所有即将推出的示例使用相同的内容。Python XML 解析模块
Python 允许使用两个模块解析这些 XML 文档,即 xml.etree.ElementTree 模块和 Minidom(最小 DOM 实现)。解析意味着从文件中读取信息并通过识别该特定 XML 文件的部分将其拆分为多个部分。让我们进一步了解如何使用这些模块来解析 XML 数据。xml.etree.ElementTree 模块:
该模块帮助我们在树结构中格式化 XML 数据,这是分层数据的最自然表示。元素类型允许在内存中存储分层数据结构,并具有以下属性:
ElementTree 是一个包装元素结构并允许与 XML 相互转换的类。现在让我们尝试使用 python 模块解析上述 XML 文件。有两种使用“ElementTree”模块解析文件的方法。第一个是使用parse() 函数,第二个是fromstring() 函数。parse() 函数解析作为文件提供的 XML 文档,而 fromstring 解析作为字符串提供的 XML,即在三引号内。使用 parse() 函数:
如前所述,该函数采用文件格式的 XML 来解析它。看下面的例子:例子:
import xml.etree.ElementTree as ET
mytree = ET.parse('sample.xml')
myroot = mytree.getroot()
for x in myroot.findall('food'):
item =x.find('item').text
price = x.find('price').text
print(item, price)
输出:Idly$2.5Paper Dosa $2.7Upma $3.65Bisi Bele Bath $4.50Kesari Bath $1.95上面的输出显示了所有必需的项目以及每个项目的价格。使用 ElementTree,您还可以修改 XML 文件。修改 XML 文件:
可以操作 XML 文件中的元素。为此,您可以使用 set() 函数。让我们首先看看如何向 XML 添加一些东西。添加到 XML:
以下示例显示了如何在项目描述中添加内容。例子:
for description in myroot.iter('description'):
new_desc = str(description.text)+'wil be served'
description.text = str(new_desc)
description.set('updated', 'yes')
mytree.write('new.xml')
write()函数帮助创建一个新的 xml 文件并将更新的输出写入相同的文件。但是,您也可以使用相同的功能修改原始文件。执行完上述代码后,您将能够看到已创建具有更新结果的新文件。
上图显示了对我们食品的修改描述。要添加新的子标签,您可以使用 SubElement() 方法。例如,如果您想在第一项 Idly 中添加一个新的专业标签,您可以执行以下操作:例子:
ET.SubElement(myroot[0], 'speciality')
for x in myroot.iter('speciality'):
new_desc = 'South Indian Special'
x.text = str(new_desc)
mytree.write('output5.xml')