什么是XML?

XML 指可扩展标记语言(eXtensible Markup Language)。

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

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

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

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

1.SAX (simple API for XML )

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

2.DOM(Document Object Model)

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

3.ElementTree(元素树)

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

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

python使用SAX解析xml

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

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

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

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

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方法

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

xml.sax.make_parser( [parser_list] )

参数说明:

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

parser方法

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

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

参数说明:

xmlfile - xml文件名

contenthandler - 必须是一个ContentHandler的对象

errorhandler - 如果指定该参数,errorhandler必须是一个SAX ErrorHandler对象

parseString方法

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

xml.sax.parseString(xmlstring, contenthandler[, errorhandler])

参数说明:

xmlstring - xml字符串

contenthandler - 必须是一个ContentHandler的对象

errorhandler - 如果指定该参数,errorhandler必须是一个SAX ErrorHandler对象

<爬虫实战>豆瓣电影TOP250(三种解析方法)

1.豆瓣电影排行.py # 目标:爬取豆瓣电影排行榜TOP250的电影信息 # 信息包括:电影名字,上映时间,主演,评分,导演,一句话评价 # 解析用学过的几种方法都实验一下①正则表达式.②Beaut ...

QT XML文档的解析 QXmlStreamReader, DOM,SAX 三种解析方法 简单示例

0. xml文档如下 <?xml version="1.0"?>

mysql 执行语句

连接数据库: $con = mysql_connect(服务器地址,用户名,密码): 选择数据库: $select = mysql_select_db(数据库名称); $select = mysql_ ...

&lbrack;Docker&rsqb;Docker拉取&comma;上传镜像到Harbor仓库

需求 因为项目的需求,需要制作一个基于tomcat的镜像.那么前提就是,需要有tomcat的基础镜像. 怎么做 我的思路跑偏了,本来以为是需要将tomcat下载下来,然后通过docker命令,让它成为 ...

Bash Game 巴什博弈

巴什博弈(Bash Game,同余理论):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先 ...

在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句

在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句  突然看到这个问题,脑袋一蒙,不知道啥意思,后来想想,试图把select里的选项放到后面,问题自然解决!   下面这 ...

用python解析xml的几种方法,Python_XML的三种解析方法相关推荐

  1. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  2. python输出字符串的后两位_Python字符串三种格式化输出

    字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助. 格式化输出:内容按照一定格式要求进行输出. 1.使用占位符%输出 python2.6版本之 ...

  3. java解析遍历List集合(其实现子类)的三种方式

    java解析遍历List集合(其实现子类)的三种方式 1 使用迭代器对象 1.1 底层 1.1.1 List接口继承了Collection接口 1.1.2 而Collection接口又继承了Itera ...

  4. 微信小程序中带参数返回上一页的方法总结(三种)

    本篇文章给大家带来的内容是关于微信小程序中带参数返回上一页的方法总结(三种),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 方法一 把当前页面数据放入本地缓存( wx.setStor ...

  5. 统计方法耗时的三种秘法

    统计方法耗时的三种秘法 1. 统计方法耗时的三种秘法 1.1 `System.currentTimeMillis()` 统计法 1.2 `org.springframework.util.StopWa ...

  6. Spring的4种事务管理(1种编程式事务+三种声明事务)

    2019独角兽企业重金招聘Python工程师标准>>> Spring的4种事务管理(1种编程式事务+三种声明事务) 一.Spring事务的介绍 二.编程式事务xml的配置 注入后直接 ...

  7. 安川伺服总线通讯方式_plc通讯方式有哪三种?plc常见的三种通讯方式

    原标题:plc通讯方式有哪三种?plc常见的三种通讯方式 PLC = Programmable Logic Controller,可编程逻辑控制器,一种数字运算操作的电子系统,专为在工业环境应用而设计 ...

  8. 鬼谷子:深交四种人,绝交三种人

    导读: 鬼谷子是中国历史上一位极具神秘色彩的人物,被誉为千古奇人,创建鬼谷门派,长于持身养性,精于心理揣摩,深明刚柔之势,通晓纵横捭阖之术,独具通天之智.鬼谷子身怀旷世绝学,智慧卓绝,精通百家学问,是 ...

  9. golang: 密码中允许出现数字、大写字母、小写字母、特殊字符,但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可)

    要求: 密码中允许出现数字.大写字母.小写字母.特殊字符(.@$!%*#_~?&^),但至少包含其中2种且长度在8-16之间(四种符号任意满足三种即可) package mainimport ...

最新文章

  1. 服务器市场步步为营:Intel发布新款至强Xeon E5-4600v4四路处理器
  2. 闭锁CountDownLatch和栅栏CyclicBarrier之异同举例
  3. 业界真的需要水下数据中心?微软的确认为如此
  4. Oracle连接查询
  5. 学习笔记:linuxsocket通信基础
  6. 如何在QT中读取串口数据
  7. @SentinelResource注解实现热点限流
  8. 吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代
  9. C# teacher类【C#】
  10. hadoop设置用户权限_No.9 MySQL之用户管理与权限设置
  11. 网易第二季度营收205亿元 同比增长13%超预期
  12. 使用PLupload在同一页面中进行多个不同类型上传解决方案和一次多文件上传的注意事项...
  13. 微信的发展堪称疯狂,这 7 点值得所有人学习
  14. ES6JS笔记以及部分运行问题记录
  15. 蓝牙连接不上车要hfp_hfp是什么意思车上
  16. 轻量级配置的登录管理器选择---Silm[zt]
  17. Python实现excel重复值计数/记录小白第一次学习
  18. 图像特征提取之LoG特征
  19. python基础学习06_if条件判断(多重判断、嵌套、三目运算)
  20. python下标遍历字典_字典的遍历以及公共方法

热门文章

  1. 你不可不知的《哈利波特》秘密
  2. bfgs算法matlab程序,bfgs算法matlab代码
  3. 如何检查域名解析是否生效
  4. CSDN 编程竞赛二十九期题解
  5. Unity Package Manager Resolving packageds...
  6. 非虚拟机环境下Ubuntu配置
  7. 奔驰网络语言c class,全新奔驰C-Class(W205):整体感更加成熟稳重,驾乘质感更加舒适...
  8. LynxFly科研小四轴横空出世,开源,F4,WIFI --(转)
  9. python制作鬼畜_用Python分析本山大叔鬼畜视频为啥这么火
  10. 小线材大功能,开博尔type c转dp线让您乐享大屏视界