,我们经常需要解析用不同语言编写的数据。Python提供了许多库来解析或拆分用其他语言编写的数据。在本Python XML解析器教程中,您将学习如何使用Python解析XML。这

,我们经常需要解析用不同语言编写的数据。Python提供了许多库来解析或拆分用其他语言编写的数据。在本Python XML解析器教程中,您将学习如何使用Python解析XML。

这里是本教程中涉及的所有主题:

什么是XML?Python XML解析模块xml.etree.ElementTree目录树模块

使用parse()函数使用fromstring()函数查找感兴趣的元素修改添加到XML的XML文件从XML

中删除xml.dom.minidom模块

使用parse()函数使用fromString()函数查找感兴趣的元素

,让我们开始吧。:)

什么是XMLXML代表可扩展标记语言。它在外观上类似于HTML,但是XML用于数据表示,而HTML用于定义正在使用的数据。XML专门用于在客户机和服务器之间来回发送和接收数据。请看下面的示例:

示例:

2.5美元两个懒汉和酸辣酱在一起553纸Dosa加酸辣酱的普通纸多沙7003.65美元6004.50美元比西贝尔巴斯4001.95美元带藏红花的甜葡萄酒950

上面的示例显示了我命名为'示例.xml“我将在本Python XML解析器教程中为所有即将到来的示例使用相同的代码。”

“Python XML解析模块”

“Python允许使用两个模块来解析这些XML文档,即xml.etree.ElementTree目录树模块和Minidom(最小DOM实现)。解析意味着从一个文件中读取信息,并通过识别该特定XML文件的各个部分将其分割为多个部分。让我们进一步了解如何使用这些模块解析XML数据。

xml.etree.ElementTree目录树模块:

这个模块帮助我们在树形结构中格式化XML数据,这是层次数据最自然的表示。元素类型允许在内存中存储分层数据结构,并具有以下属性:

属性描述标记它是一个字符串,表示要存储的数据类型属性由多个属性组成,这些属性存储为字典文本字符串一个文本字符串,其中包含需要显示的信息如果有必要,Tail String也可以有Tail String子元素,这些子元素由多个存储为序列的子元素组成

ElementTree是一个类,它包装元素结构并允许与XML之间的转换。现在让我们尝试使用python模块解析上面的XML文件。

有两种方法可以使用“ElementTree”模块解析文件。第一个是使用parse()函数,第二个是fromstring()函数。parse()函数解析作为文件提供的XML文档,而fromstring在作为字符串提供时解析XML即在三个引号中,使用parse()函数的

如前所述:

,此函数接受文件格式的XML来解析它。请看下面的示例:

示例:

导入xml.etree.ElementTree目录树作为ET我的根=我的树.getroot(

如您所见,您首先需要做的是导入xml.etree.ElementTree目录树模块。然后,parse()方法解析示例.xml'文件。getroot()方法返回'示例.xml'.

执行上述代码时,您将不会看到返回的输出,但不会有错误指示代码已成功执行。要检查根元素,只需使用print语句如下:

示例:

导入xml.etree.ElementTree目录树作为ETmyroot=mytree.getroot()打印(myroot)

输出:位于0x033589F0的

上述输出指示XML文档中的根元素是“metadata”。

使用fromstring()函数:

还可以使用fromstring()函数解析字符串数据。如果您想这样做,请将XML作为字符串传递到三个引号中,如下所示:

import XML.etree.ElementTree as ET数据='''懒散地'''myroot=ET.fromstring(数据)打印(我的根.tag)

上述代码将返回与前一个代码相同的输出。请注意,用作字符串的XML文档只是'示例.xml“我用它来提高能见度。也可以使用完整的XML文档。

还可以使用“tag”对象检索根标记,如下所示:

示例:

打印(我的根.tag)

输出:元数据

只需指定要在输出中看到字符串的哪一部分,就可以对标记字符串输出进行切片。

示例:

打印(我的根.tag[0:4])

输出:元

如前所述,标记也可以有字典属性。要检查根标记是否具有任何属性,可以使用“attrib”对象,如下所示:

示例:

print(马钱草)

输出:{}

如您所见,输出是一个空字典,因为根标记没有属性。

查找感兴趣的元素:

根也由子标记组成。要检索根标记的子标记,可以使用以下命令:

示例:

print(myroot[0].tag)

OUTPUT:food

如果要检索根的所有第一个子标记,可以使用for循环遍历它,如下所示:

示例:

for x in myroot[0]:打印(x.text)

输出:

Idly$2.5 Two Idly's with chutney 553

如您所见,第一个项目的文本信息已作为输出返回。现在,如果要显示所有具有特定价格的项,可以使用get()方法。此方法访问元素的属性。

示例:myroot.findall('food')中x的

:price=x.find('price').textnew_desc=str(description.text) “将提供”description.set('已更新','是')我的树.write('新.xml')

write()函数帮助创建新的xml文件并将更新的输出写入该文件。但是,也可以使用相同的函数修改原始文件。执行上述代码后,您将能够看到一个新文件已创建,其中包含更新的结果。


上图显示了对我们的食品的修改说明。要添加新的子标记,可以使用SubElement()方法。例如,如果您想在第一个项目中添加一个新的专业标记Idly,可以执行以下操作:

示例:

等子元素(myroot[0],'专业')new_desc='南印度特色菜'x、 文本=str(新描述)mytree.write('output5.xml')

输出:


如您所见,第一个食品标签下添加了一个新标签。通过在[]方括号内指定下标,可以在任何位置添加标记。现在让我们来看看如何使用这个模块删除项目。

从XML中删除:

要使用ElementTree删除属性或子元素,可以使用pop()方法。此方法将删除用户不需要的所需属性或元素。

示例:

myroot[0][0].attrib.pop('name',None)#创建包含结果的新XML文件mytree.write('output5.xml')

输出:


上图显示名称属性已从项标记中删除。要删除完整的标记,可以使用相同的pop()方法,如下所示:

示例:

myroot[0].remove(myroot[0][0])mytree.write('output7.xml')

OUTPUT:

执行上述代码时,将完全删除食品标签的第一个子标签,包括所有子标签。在此之前,我们一直在使用Python xml解析器教程中的xml.etree.ElementTree模块。现在让我们来看看如何使用Minidom.

.XML.dom.Minidom模块解析XML:

这个模块基本上是由精通dom(文档对象模块)的人使用的。DOM应用程序通常从将XML解析为DOM开始。在xml.dom.minidom中,这可以通过以下方式实现:

使用parse()函数:

第一个方法是通过提供要作为参数解析的xml文件来使用parse()函数。例如:

示例:xml.dom import minidom中的

p1=minidom.parse("示例.xml“);”

“一旦执行,就可以分割XML文件并获取所需的数据。还可以使用此函数分析打开的文件。

示例:

dat=open('示例.xml')p2=minidom.parse(dat)

在本例中,存储打开文件的变量作为参数提供给parse函数。

使用parse string()方法:

当您希望提供要作为字符串分析的XML时,使用此方法。

示例:

p3=minidom.parseString('使用parseString')

您可以使用上述任何方法解析XML。现在让我们尝试使用这个模块来获取数据。

查找感兴趣的元素:

在分析完我的文件之后,如果我尝试打印它,返回的输出将显示一条消息,说明存储分析数据的变量是DOM的对象。

示例:

dat=minidom.parse('sample.xml')打印(dat)

输出:

使用GetElementByTagName访问元素:

示例:

标记名=dat.getElementsByTagName('item')[0]打印(标记名)

如果我试图使用GetElementByTagName方法获取第一个元素,我将看到以下输出:

输出:

请注意,仅返回了一个输出,因为为了方便起见,我使用了[0]下标,这将在以后的操作中删除示例。

要访问属性的值,我必须使用如下的值属性:

示例:

dat=minidom.parse('sample.xml')标记名=日期getElementsByTagName(“项目”)打印(x.firstChild.data)

输出:

Idly Paper Dosa Upma Bisi Bele Bath Kesari Bath

以计算菜单上的项目数,您可以使用len()函数,如下所示:

示例:

print(len(items))

输出:5

输出指定我们的菜单由5个项组成。

这将结束本Python XML解析器教程。我希望你已经明白了一切。

确保你尽可能多的练习和恢复你的经验。