返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈一下关于Python对XML的解析
  • 225
分享到

浅谈一下关于Python对XML的解析

Python XMLPython XML解析 2023-05-12 14:05:47 225人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录什么是XML?python对XML的解析1.SAX (simple api for XML )2.DOM(Document Object Model)3.ElementTree(

什么是XML?

XML 指可扩展标记语言(eXtensibleMarkupLanguage)。 你可以通过本站学习XML教程

XML 被设计用来传输和存储数据。

XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。

它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。

python对XML的解析

常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同。

python有三种方法解析XML,SAX,DOM,以及ElementTree:

1.SAX (simple API for XML )

python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

2.DOM(Document Object Model)

将XML数据在内存中解析成一个树,通过对树的操作来操作XML。

3.ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。

注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。

本章节使用到的 XML 实例文件 movies.xml 内容如下:

python使用SAX解析xml

SAX是一种基于事件驱动的API。

利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器。

解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件;

而事件处理器则负责对事件作出相应,对传递的XML数据进行处理。

<psax适于处理下面的问题:< p="" style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', Arial, sans-serif; font-size: 12px; line-height: nORMal; text-align: start; background-color: rgb(255, 255, 255);">

1、对大型文件进行处理;

2、只需要文件的部分内容,或者只需从文件中得到特定信息。

3、想建立自己的对象模型的时候。

在python中使用sax方式处理xml要先引入xml.sax中的parse函数,还有xml.sax.handler中的ContentHandler。

ContentHandler类方法介绍

characters(content)方法

调用时机:

从行开始,遇到标签之前,存在字符,content的值为这些字符串

从一个标签,遇到下一个标签之前, 存在字符,content的值为这些字符串。

从一个标签,遇到行结束符之前,存在字符,content的值为这些字符串。

标签可以是开始标签,也可以是结束标签。

startDocument()方法

文档启动的时候调用。

endDocument()方法

解析器到达文档结尾时调用。

startElement(name, attrs)方法

遇到XML开始标签时调用,name是标签的名字,attrs是标签的属性值字典。

endElement(name)方法

遇到XML结束标签时调用。

make_parser方法

以下方法创建一个新的解析器对象并返回。

参数说明:

  • parser_list- 可选参数,解析器列表

parser方法

以下方法创建一个 SAX 解析器并解析xml文档:

参数说明:

  • xmlfile - xml文件名
  • contenthandler - 必须是一个ContentHandler的对象
  • errorhandler - 如果指定该参数,errorhandler必须是一个SAX ErrorHandler对象

parseString方法

创建一个XML解析器并解析xml字符串:

参数说明:

  • xmlstring - xml字符串
  • contenthandler - 必须是一个ContentHandler的对象
  • errorhandler - 如果指定该参数,errorhandler必须是一个SAX ErrorHandler对象

Python 解析XML实例

以上代码执行结果如下:

完整的 SAX API 文档请查阅Python SAX APIs

使用xml.dom解析xml

文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。

一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。

python中用xml.dom.minidom来解析xml文件,实例如下:

以上程序执行结果如下:

完整的 DOM API 文档请查阅Python DOM APIs。

到此这篇关于浅谈一下关于Python对XML的解析的文章就介绍到这了,更多相关Python对XML的解析内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈一下关于Python对XML的解析

本文链接: https://lsjlt.com/news/202097.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈一下关于Python对XML的解析
    目录什么是XML?python对XML的解析1.SAX (simple API for XML )2.DOM(Document Object Model)3.ElementTree(...
    99+
    2023-05-12
    Python XML Python XML解析
  • 浅谈关于axios和session的一些事
    发现问题 最近在工作中遇到一个问题,后端写好,前端写好,postman测试做好,一切都没有问题,但是实际用axios来实现登陆功能的时候问题就来了.... 什么情况?登陆根本用不了啊!每次都提示我没有登陆...
    99+
    2022-06-04
    浅谈 axios session
  • 浅谈vue-cli5关于yarn的一个小坑
    目录问题解决方案原因问题 昨天有小伙伴下了我的 DEMO之后反映运行报错。 因为这个项目环境我测试过许多次,不管是npm还是yarn都能正常运行,所以听到运行报错时下意识地就认为是...
    99+
    2024-04-02
  • 浅谈一下Python中的with用法
    目录一、With语句是什么二、with如何工作三、相关术语一、With语句是什么 有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常...
    99+
    2023-05-15
    Python with Python with用法
  • 浅谈对Python变量的一些认识理解
    一、Python变量 在大多数语言中,为一个值起一个名字时,把这种行为称为“给变量赋值”或“把值存储在变量中”。不过,Python与许多其它计算机语言的有所不同,它并不是把值存储在变...
    99+
    2024-04-02
  • 浅谈一下基于Pytorch的可视化工具
    目录准备网络网络结构的可视化---PytorchViz训练过程可视化---TensorboardXVisdom可视化深度学习网络通常具有很深的层次结构,而且层与层之间通常会有并联、串...
    99+
    2023-05-14
    Pytorch Pytorch可视化工具
  • 浅谈对于DAO设计模式的理解
    为了降低耦合性,提出了DAO封装数据库操作的设计模式。它可以实现业务逻辑与数据库访问相分离。相对来说,数据库是比较稳定的,其中DAO组件依赖于数据库系统,提供数据库访问的接口。一般的DAO的封装由以下另个原则: · 一个表对应一个...
    99+
    2023-05-31
    dao 设计模式 %d
  • 浅谈一下Python究竟属不属于嵌入式语言
    目录写在前面:什么是Python? 编程语言的定义?编程语言的分类?编译型语言解释型语言PythonPython优缺点小结什么是嵌入式语言? 什么是嵌入式?嵌入式语言有哪些要求?小结...
    99+
    2023-05-15
    Python含义 Python嵌入式
  • Python对XML的解析式怎样的
    这篇文章主要讲解了“Python对XML的解析式怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python对XML的解析式怎样的”吧!什么是 XML?XML 指可扩展标记语言(eXte...
    99+
    2023-06-02
  • 关于Python下的Matlab函数对应关系(Numpy)
    目录Matlab函数对应关系(Numpy)Numpy与Matlab互转操作1、常用操作(参考numpy官方说明)2、线性变换(参考numpy官方说明)Matlab函数对应关系(Num...
    99+
    2024-04-02
  • 【Python】浅谈python和PLC的直接通讯(深度解析)
    文章目录 前言一、Snap7到底是什么?二、开发环境搭建的详细步骤1.安装Snap72.安装python-snap74.读写PLC 实战实操(重点) 前言 PLC(Programma...
    99+
    2023-09-02
    python 开发语言
  • 对Python中GIL(全局解释器锁)的一点理解浅析
    目录前言为什么需要 GILGIL 的实现几点说明GIL 优化用户数据的一致性不能依赖 GIL总结参考文档前言 GIL(Global Interpreter Lock),全局解释器锁,...
    99+
    2024-04-02
  • 浅谈Python中用datetime包进行对时间的一些操作
    1. 计算给出两个时间之间的时间差 import datetime as dt # current time cur_time = dt.datetime.today() # one day pre_t...
    99+
    2022-06-04
    浅谈 中用 操作
  • python解析基于xml格式的日志文件
    大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本。 首先,同样的先看看日志是个啥样。 都是xml格式的,是不是看着就头晕了??没事,我们先...
    99+
    2022-06-04
    格式 文件 日志
  • 浅谈关于如何检测iOS14本地网络权限的一些思路
    前戏 苹果iOS 14针对本地局域做了一些权限限制,详情见链接:https://developer.apple.com/videos/play/wwdc2020/10110/ ww...
    99+
    2022-05-19
    iOS14 本地网络 权限
  • 浅析对Java关键字final和static的理解
    一、final            根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修...
    99+
    2023-05-31
    java static final
  • 横向对比分析Python解析XML的四种方式
    在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受。 在网络搜索后发现,目前应用比较广泛,且效率相对较高的Elem...
    99+
    2022-06-04
    四种 横向 方式
  • 关于Python与Golang语言的对比分析
    目录一:前言二:特点1.Python①解释型语言②动态数据类型 ③完全面向对象的语言④拥有强大的标准库⑤社区提供了大量第三方库2.Golang①静态强类型、编译型、并发型②垃圾回收机...
    99+
    2024-04-02
  • mybatis中注解与xml配置的对应关系和对比分析
    注解与xml配置的对应关系 mybatis中注解就是简单不需要写配置文件,适合简单的数据处理,理解起来比较容易,不动态生成SQL时候可以用用。 需要绑定,有些时候不如配置文件,配置文...
    99+
    2024-04-02
  • 关于对python中self的深入理解
    假设有一个类nameMain(), 如最下面代码 类 : 一个抽象的模板。可以理解为抽象设计图类名:类的名字。查看/实现方式 :print(nameMain)或者print(self...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作