python使用sax实现xml解析
之前在使用xml解析的时候,在网上搜了很多教程,最终没有能按照网上的教程实现需求。
所以呢,只好自己去看源码,在sax的__init__.py下看到这么一段代码:
1 def parse(source, handler, errorHandler=ErrorHandler()):
2 parser = make_parser()
3 parser.setContentHandler(handler)
4 parser.setErrorHandler(errorHandler)
5 parser.parse(source)
# 可以看出来,执行xml解析至少需要两个参数:source:源文件路径和实例化的handler对象
下面我们就用一个例子来是实现一下:(事先说明,这个例子是网上找的,不是自己写的)
<bookstore><book category="CHILDREN"><title>Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book><book category="WEB"><title>Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book>
</bookstore>
下面将对各个步骤的作用逐个说明:
#!usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/5/30 22:43
# @Author : Adong_Chenfrom xml import saxclass TestHandler(sax.ContentHandler): # 定义自己的handler类,继承sax.ContentHandlerdef __init__(self):sax.ContentHandler.__init__(self) # 弗父类和子类都需要初始化(做一些变量的赋值操作等)self._content = ""self._tag = ""def startElement(self, name, attrs): # 遇到<tag>标签时候会执行的方法,这里的name,attrs不用自己传值的(这里其实是重写)self._tag = nameif name == "bookstore":print "=========BOOKSTORE========="if self._tag == "book":print "BOOK: " + attrs["category"]print "--------------------------"def endElement(self, name): # 遇到</tag>执行的方法,name不用自己传值(重写)# print "endElement"if name == "bookstore":print "=========BOOKSTORE========="elif name == "title":print "Title: " + self._contentelif name == "author":print "Author: " + self._contentelif name == "year":print "Year: " + self._contentelif name == "price":print "Price: " + self._contentelse:passdef characters(self, content): # 获取标签内容self._content = contentif __name__ == "__main__":handler = TestHandler() # 自定义类实例化成对象sax.parse("Test2.xml", handler) # 解析xml文件
执行结果如下:
=========BOOKSTORE=========
BOOK: CHILDREN
--------------------------
Title: Harry Potter
Author: J K. Rowling
Year: 2005
Price: 29.99
BOOK: WEB
--------------------------
Title: Learning XML
Author: Erik T. Ray
Year: 2003
Price: 39.95
=========BOOKSTORE=========
转载于:https://www.cnblogs.com/chenadong/p/9117156.html
python使用sax实现xml解析相关推荐
- Android使用SAX实现XML解析,使用text/xml格式与后台交互
这篇博文正式发表于2015-02-16 14:20,现在显示的创建时间2015-02-05 10:07是当初写草稿的时间 一.SAX解析XML 1,首先展示一下要写入以及解析的xml的文件格式: &l ...
- python 使用sax 解析xml 文件
这里不是说xml 的所以如果xml 不了解,可以百度大致看下即可, SAX知识了解 SAX (simple API for XML ) 有解析器和事件处理器 解析器负责读取XML文档,并向事件处理器 ...
- 常用 XML 解析技术
现在的软件项目都不是独立的一个项目,都是多系统协调工作.这样的话就涉及到系统间的通讯,通讯就会跟报文传输挂上关系.系统间使用怎样的报文格式进行通讯呢?有的使用固定长度格式报文:有的使用变长格式报文:有 ...
- 请利用SAX编写程序解析Yahoo的XML格式的天气预报,获取天气预报——python学习笔记
1. 题目: 请利用SAX编写程序解析Yahoo的XML格式的天气预报,获取天气预报: 题目是廖雪峰老师的python教程中XML的练习. 本篇博文只是针对这一题目,没有做详细的介绍,如果看不懂可以在 ...
- python中xml解析sax_python使用SAX解析xml
python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件 在python中使用sax方式处理xml要先引入xml.s ...
- Python 标准库之 xml.etree.ElementTree xml解析
Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...
- XML文档DOM、SAX、STAX解析方式
2019独角兽企业重金招聘Python工程师标准>>> XML解析方式有三种:DOM.SAX.StAX xml文档每个成分都是一个节点,每个xml标签对应一个元素节点:整个文档是一个 ...
- python 之模块之 xml.dom.minidom解析xml
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...
- Python之XML解析详解
什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...
- Python XML解析
什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这 ...
最新文章
- QGC地面站参数调节
- [视频]用SQL Server Compact创建简单的Windows应用程序
- Linux的用户和用户组管理
- 使用Java api 和 jni混合方式调用OpenCV
- C++中的空类与空结构体大小
- .NET Core 3.0深入源码理解HttpClientFactory之实战
- linux查找应用主机,Linux 主机和服务器基本性能检查命令和工具
- HTTP协议状态码详解(HTTP Status Code)(转)
- Eclipse 取消import自动补全具体的类名
- navicat mysql 免安装_mysql免安装版配置+navicat测试
- 《腾讯是怎么长大的》读书笔记
- 本周大新闻|佳能AR头显MREAL X1发布,Quest手势追踪2.0来袭
- 11年的macbook还能用吗_8年老本的第二春:2011款Macbook Pro换血记
- R语言抽样并验证总体分别为正态分布、均匀分布、指数分布时样本均值的抽样分布
- 基金从业考试如何备考?
- python添加win32com包,将ppt转换为图片
- 侯捷C++->构造函数
- sql使用WITH ROLLUP分组统计并求总数
- 计算机网络基础知识——(一)
- 行业洞察 | 小米发布人形机器人的AI技术
热门文章
- php 判断当前协议,JavaScript 判断当前协议是http还是https
- Google Docs API 发布,自动化文档处理
- NPM — JavaScript 的包管理器
- 《Java和Android开发学习指南(第2版)》——第1章,第1.5节本章小结
- NOIp 2014 #3 寻找道路 Label:图论
- 新手android中ListView实现音乐列表
- 【管理心得之三】管理者们扪心自问一下 “你们杀了几个属下”
- 对比iOS中的四种数据存储
- ASP.NET里的路径的使用-预备篇
- 【TDA4系列】向 PSDKRA 添加新的图像传感器