,我们经常需要解析用不同语言编写的数据。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解析器教程。我希望你已经明白了一切。

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

有一个问题给我们吗?请在“PythonXML解析器教程”的评论部分提到它,我们将尽快给您回复。

要深入了解Python及其各种应用程序,您可以注册参加具有24/7支持和终身访问的实时Python在线培训。“

python读取xml文件并修改_如何在Python中解析和修改XML?相关推荐

  1. python读取大文件的坑_如何在Python中读取大文件的特定部分

    Given a large file (hundreds of MB) how would I use Python to quickly read the content between a spe ...

  2. python读取大文件太慢_强悍的Python读取大文件的解决方案

    Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适 ...

  3. python解析xml文件成字典_如何在Python中将XML文件解析为字典?

    您可以使用getElementsByTagName和getAttribute来跟踪结果:dict_users = dict() docXML = parse('mydata.xml') users= ...

  4. python读取nc文件并转换成csv_使用Python截取nc文件数据保存到CSV文件-Go语言中文社区...

    问题要求: 编写一个函数完成以下任务:截取经度在23°N-40°N,纬度在118°E-131°E范围内各属性不同深度的数据,使用Python中合适的数据结构将截取的数据保存到同名CSV文件中.(nc文 ...

  5. python读取mat文件并画图_[宜配屋]听图阁

    先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); sav ...

  6. python读取dat文件写入表格_在python中从.dat文件读取和执行计算

    我需要用python读取一个.dat文件,它总共有12列,数百万行.我需要把第2.3和4栏和第1栏分开计算.所以在加载.dat文件之前,是否需要删除所有其他不需要的列?如果没有,如何有选择地声明列并要 ...

  7. python求txt文件内平均值_如何使用python计算几个.dat文件的平均值?

    这是一种相当时间和资源有效的方法,它读取值并并行计算所有文件的平均值,但每次只读取一行文件 – 但它会暂时读取整个第一个.dat文件进入内存以确定每个文件中将有多少行和每列数字. 你没有说你的&quo ...

  8. xml文件 卷积神经网络_理解卷积神经网络中的输入与输出形状(Keras实现)

    即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑.本文章将帮助你理解卷积神经网络的输入和输出形状. 让我们看看一个例子.CNN ...

  9. python读取压缩文件的大小_python查看zip包中文件及大小的方法

    python查看zip包中文件及大小的方法 本文实例讲述了python查看zip包中文件及大小的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python import ...

  10. python提取选中文件的文件名_如何从python文件路径中提取文件名?

    项目概述: 用户通过浏览器选择一个文件来导入数据.然后,我解包二进制文件.然后,我将新解包的数据保存为.csv文件,以便以后在excel中查看数据.用户当前通过键入新文件名来创建文件名.然后我继续用m ...

最新文章

  1. python制作解压工具_使用python制作一个解压缩软件
  2. javascript 语法
  3. 动态规划最常见的习题 (最长公共子串、最长公共子序列、最短编辑距离)
  4. Android 开机自动运行和添加删除桌面快捷方式
  5. maven 可执行 jar_Maven提示:有关可执行jar的所有信息
  6. [转载] java虚拟机 jvm 出入java栈 栈空间内存分配
  7. git 命令之 如何将本地新建分支推到服务器上
  8. redis专题:redis的常用数据结构及使用场景
  9. 妙啊!类别不平衡上的半监督学习
  10. java 定时还款 技术_详解java定时任务
  11. python中求众数_Python实现求众数的三种方法
  12. 精通ASP.NET Web程序测试
  13. java中的字符串String的不可变性
  14. 动力总成悬置系统刚度及模态有效质量计算公式推导
  15. android 9.0 开机动画,Android bootanim开机动画启动流程
  16. 微商必备6款软件!十分好用
  17. 科普——未知的公共免费WIFI存在的风险及隐患
  18. C++控制台模拟 骇客帝国数字飞屏
  19. 微软公司2007年秋季校园招聘在线宣讲会
  20. 鸿蒙系统忘记开机密码,手机忘记密码怎么办?不用慌,免刷机,教你妙招去掉手机密码...

热门文章

  1. 计算机网络中的www服务,计算机网络基础练习题01
  2. mac如何配置环境变量
  3. 计算机硬盘哒哒响,教你轻松解决硬盘异响(咔咔或者嗒嗒声)
  4. java读取 文件_Java读取文件的简单实现方法
  5. 嵌入式软件工程师总结(1)
  6. 51单片机C语言程序100例
  7. 单机数据库,集群数据库,分布式数据库的概念和比较
  8. JAVA基础-面型对象测试题
  9. Brackets - (HTML/CSS/JavaScript 前端 WEB IDE) 使用技巧
  10. UCI数据库Heart Disease数据集下载