我的编程空间,编程开发者的网络收藏夹
学习永远不晚

分析如何在Python中解析和修改XML

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

分析如何在Python中解析和修改XML

目录
  • 一、什么是XML?
  • 二、Python XML解析模块
    • 2.1、xml.etree.ElementTree模块
    • 2.2、xml.dom.minidom模块

一、什么是XML?

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

例子:


<? xml version ="1.0" encoding ="UTF-8" ?>
 <metadata>
 <food>
     <item name ="breakfast" > Idly </item>
     <price> $2.5 </price>
     <description>
   两个 idly's with chutney
    < /description>
     <calories> 553 </calories>
 </food>
 <food>
     <item name ="breakfast" > Paper Dosa </item>
     <price> $2.7 </price>
     <
        <calories> 700 </calories>
 </food>
 <food>
     <item name ="breakfast" > Upma </item>
     <price> $3.65 </price>
     <description>
     Rava upma with bajji
     </description>
     <calories> 600 </calories>
 </food>
 <food>
     <item name ="breakfast" > Bisi Bele Bath </item>
     <price> $4.50 </price>
     <description>
   Bisi Bele Bath with sev
     </description>
     <calories> 400 </calories>
</food>
 <food>
     <item name ="breakfast" > Kesari Bath </item>
     <price> $1.95 </price>
     <description>
    藏红花甜拉瓦
    </description>
     <calories> 950 </calories>
 </食物>
 </元数据>

上面的示例显示了我命名为“Sample.xml”的文件的内容,我将在此Python XML解析器教程中为所有即将推出的示例使用相同的内容。

二、Python XML解析模块

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

2.1、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()

如您所见,您需要做的第一件事是导入xml.etree.ElementTree模块。然后,parse()方法解析“Sample.xml”文件。getroot()方法返回“Sample.xml”的根元素。

执行上述代码时,您不会看到返回的输出,但不会出现表明代码已成功执行的错误。要检查根元素,您可以简单地使用print语句,如下所示:

例子:


import xml.etree.ElementTree as ET
mytree = ET.parse('sample.xml')
myroot = mytree.getroot()
print(myroot)

输出:

<元素'元数据'在0x033589F0>

上面的输出表明我们的XML文档中的根元素是“元数据”。

使用fromstring()函数:

您还可以使用fromstring()函数来解析您的字符串数据。如果要执行此操作,请将XML作为字符串传递给三引号,如下所示:


import xml.etree.ElementTree as ET
data='''<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<food>
    <item name="breakfast">Idly</item>
    <price>$2.5</price>
    <description>
   Two idly's with chutney
   </description>
    <calories>553</calories>
</food>
</metadata>
'''
myroot = ET.fromstring(data)
#print(myroot)
print(myroot.tag)

上面的代码将返回与前一个相同的输出。请注意,用作字符串的XML文档只是“Sample.xml”的一部分,我使用它来提高可见性。您也可以使用完整的XML文档。

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

例子:


print(myroot.tag)

输出:

元数据

您还可以通过指定要在输出中看到的字符串部分来对标签字符串输出进行切片。

例子:


print(myroot.tag[0:4])

输出:

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

例子:


print(myroot.attrib)

输出:

{}

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

寻找感兴趣的元素:

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

例子:


print(myroot[0].tag)

输出:

食物

现在,如果要检索根的所有第一个子标签,可以使用for循环迭代它,如下所示:

例子:


for x in myroot[0]:
     print(x.tag, x.attrib)

输出:

item {'name': 'breakfast'}
价格{}
描述{}
卡路里{}

返回的所有项目都是食物的子属性和标签。

要使用ElementTree将文本从XML中分离出来,您可以使用text属性。例如,如果我想检索有关第一个食品的所有信息,我应该使用以下代码:

例子:


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

输出:

懒懒地
$ 2.5
两悠闲地与酸辣酱的
553

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

例子:


for x in myroot.findall('food'):
    item =x.find('item').text
    price = x.find('price').text
    print(item, price)

输出:

Idly$2.5
Paper Dosa$2.7
Upma$3.65
Bisi Bele Bath$4.50
Kesari 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')

输出:

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

从XML中删除:

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

例子:


myroot[0][0].attrib.pop('name', None)
 
# create a new XML file with the results
mytree.write('output5.xml')

输出:

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

例子:


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

输出:

输出显示食品标签的第一个子元素已被删除。如果要删除所有标签,可以使用clear()函数,如下所示:

例子:


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

输出:

执行上述代码时,food标签的第一个子标签将被完全删除,包括所有子标签。到这里为止,我们一直在使用这个Python XML解析器教程中的xml.etree.ElementTree模块。现在让我们看看如何使用Minidom解析XML。

2.2、xml.dom.minidom模块

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

使用parse()函数:

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

例子:


from xml.dom import minidom
p1 = minidom.parse("sample.xml");

执行此操作后,您将能够拆分XML文件并获取所需的数据。您还可以使用此函数解析打开的文件。

例子:


dat=open('sample.xml')
p2=minidom.parse(dat)

在这种情况下,存储打开文件的变量作为参数提供给解析函数。

使用parseString()方法:

当您想要提供要作为字符串解析的XML时,将使用此方法。

例子:


p3 = minidom.parseString('<myxml>Using<empty/> parseString</myxml>')

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

寻找感兴趣的元素:

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

例子:


dat=minidom.parse('sample.xml')
print(dat)

输出:

<xml.dom.minidom.Document对象在0x03B5A308>

使用GetElementByTagName访问元素:

例子:


tagname= dat.getElementsByTagName('item')[0]
print(tagname)

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

输出:

<DOM元素:0xc6bd00处的项目>

请注意,只返回了一个输出,因为为了方便我使用了[0]下标,这将在进一步的示例中删除。

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

例子:


dat = minidom.parse('sample.xml')
tagname= dat.getElementsByTagName('item')
print(tagname[0].attributes['name'].value)

输出:

早餐

要检索这些标签中存在的数据,您可以使用data属性,如下所示:

例子:


print(tagname[1].firstChild.data)

输出:

纸Dosa

您还可以使用value属性拆分和检索属性的值。

例子:


print(items[1].attributes['name'].value)

输出:

早餐

要打印出我们菜单中可用的所有项目,您可以遍历这些项目并返回所有项目。

例子:


for x in items:
    print(x.firstChild.data)

输出:

袖手旁观
纸DOSA
UPMA
碧斯百丽沐浴
Kesari浴

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

例子:


print(len(items))

输出指定我们的菜单包含5个项目。

这使我们结束了本Python XML解析器教程。我希望你已经清楚地了解了一切。

以上就是分析如何在Python中解析和修改XML的详细内容,更多关于Python解析和修改XML的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

分析如何在Python中解析和修改XML

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

分析如何在Python中解析和修改XML

目录一、什么是XML?二、Python XML解析模块2.1、xml.etree.ElementTree模块2.2、xml.dom.minidom模块一、什么是XML? XML代表可扩展标记语言。它在外观上类似于HTML,但XML用于数据表
2022-06-02

Python中如何解析XML

Python中如何解析XML,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是XML?XML是可扩展标记语言(Extensible Markup Langua
2023-06-17

详解在Python程序中解析并修改XML内容的方法

需求 在实际应用中,需要对xml配置文件进行实时修改, 1.增加、删除 某些节点 2.增加,删除,修改某个节点下的某些属性 3.增加,删除,修改某些节点的文本 使用xml文档2022-06-04

Python如何解析 XML 文档

本文详解Python解析XML文档的方法,包括ElementTree、SAX、lxml和minidom。选择解析器取决于特定需求,如文档大小、自定义要求和高级功能(如XPath)。ElementTree简单易用,适合中小文档;SAX高效,适用于大型文档;lxml功能强大,支持高级功能;minidom提供DOM树直接访问。
Python如何解析 XML 文档
2024-04-02

Python如何允许在对象中使用 XML 解析器

Python提供对象XML解析功能,使得解析XML文档更加高效。ElementTree和lxml是常用的对象解析器。ElementTree基于标准库,简单易用;lxml功能更强大,支持高级解析任务。对象XML解析器具有优点,如易用性、可扩展性、性能和标准支持。它们广泛应用于各种场景,如解析配置文件、提取数据、创建和修改XML文档。
Python如何允许在对象中使用 XML 解析器
2024-04-02

Python如何释放 XML 解析器

在Python中,释放XML解析器至关重要,以释放内存并防止泄漏。可以通过使用ElementTree库中的clear()方法、iterparse()方法或parse()函数的free()方法来实现。在Python3.8及以上版本中,使用xml.etree.ElementPath库代替ElementTree。释放XML解析器是保持应用程序运行高效的关键步骤。
Python如何释放 XML 解析器
2024-04-02

Python如何创建 XML 解析器

本指南介绍了在Python中创建XML解析器的各种方法,包括DOM解析器、SAX解析器、lxml库和ElementTree模块。每种方法的优点和缺点都有详细说明,以便读者根据其特定需求选择最佳解析器。DOM解析器提供对文档结构的全面访问,而SAX解析器更快、更节内存。lxml结合了DOM和SAX的优点,ElementTree提供了速度和内存效率之间的平衡。
Python如何创建 XML 解析器
2024-04-02

如何进行mybatis实现批量修改xml方式的分析

本篇文章为大家展示了如何进行mybatis实现批量修改xml方式的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。mybatis批量修改-xmlmybatis批量查询,批量新增就不聊了,今天看看批
2023-06-21

Android中如何实现XML解析

这篇文章主要为大家展示了“Android中如何实现XML解析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何实现XML解析”这篇文章吧。首先创建在Android工程中创建一个A
2023-05-30

如何在python中解析ElementTree

这篇文章将为大家详细讲解有关如何在python中解析ElementTree,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python主要应用领域有哪些1、云计算,典型应用OpenStack。
2023-06-14

Python如何把 XML 数据解析到数组中

解析XML数据到数组使用Python解析XML并将其存储在数组中,有以下常用方法:ElementTree库:简单且直观,适用于小型XML文档。lxml库:功能强大,解析速度快,适合大型XML文档。内置函数xml.dom.minidom:适用于较小的XML文档,提供基本解析功能。选择合适的方法取决于文档大小、所需速度和功能。本文详细介绍了每种方法的步骤,包括将数据解析到数组的示例代码。通过了解这些技术,您可以有效地解析XML数据并将其转换为结构化的数组。
Python如何把 XML 数据解析到数组中
2024-04-02

python中bs4解析和xpath解析的示例分析

这篇文章给大家分享的是有关python中bs4解析和xpath解析的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。bs4解析原理:1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对
2023-06-29

怎么在python项目中对xml进行解析

今天就跟大家聊聊有关怎么在python项目中对xml进行解析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、XML的读取import xml.dom.minidom#负责解析xml
2023-06-06

如何在Python中进行数据分析和挖掘

如何在Python中进行数据分析和挖掘数据分析和挖掘是当今信息时代中不可或缺的关键技能。Python作为一种高级编程语言,具有丰富的数据处理和分析库,使得数据分析和挖掘变得更加简单和高效。本文将介绍如何在Python中进行数据分析和挖掘,并
2023-10-24

PHP如何允许在对象中使用 XML 解析器

PHP允许通过DOMDocument、SimpleXML和XMLReader在对象中使用XML解析器。DOMDocument提供了一个对象模型,SimpleXML使用面向对象的语法,而XMLReader则基于事件流。解析XML,可以使用DOMDocument的load()或loadXML(),SimpleXML的simplexml_load_file()或simplexml_load_string(),以及XMLReader的open()。遍历XML,DOMDocument使用DOMNode,Simple
PHP如何允许在对象中使用 XML 解析器
2024-04-02

PHP中如何处理XML解析错误?

PHP是一种广泛使用的编程语言,它支持许多不同的文件格式,包括XML。在处理XML文件时,可能会出现解析错误。本文将介绍如何在PHP中处理XML解析错误,并提供一些具体的代码示例。检查XML文件格式在处理XML文件之前,必须确保XML文件的
PHP中如何处理XML解析错误?
2023-12-09

Java如何允许在对象中使用 XML 解析器

Java提供了多种库和API,允许在对象中使用XML解析器。DOM将XML文档表示为对象模型,SAX以流方式逐个事件解析文档,StAX提供更高级别的API,JAXB允许将Java对象与XML文档进行绑定。选择合适的解析器取决于应用程序的需求,DOM适用于需要随机访问文档,SAX和StAX适合处理大型或流式数据,JAXB用于对象映射。
Java如何允许在对象中使用 XML 解析器
2024-04-02

简单介绍使用Python解析并修改XML文档的方法

问题 你想读取一个XML文档,对它最一些修改,然后将结果写回XML文档。解决方案 使用 xml.etree.ElementTree 模块可以很容易的处理这些任务。 第一步是以通常的方式来解析这个文档。例如,假设你有一个名为 pred.xml
2022-06-04

如何分析docker中 WSL 配置与修改问题

本篇文章为大家展示了如何分析docker中 WSL 配置与修改问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。存储在%UserProfile%目录中。用于在作为WSL2版本运行的所有已安装Linu
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录