Python使用sax模块解析XML文件示例


Posted in Python onApril 04, 2019

本文实例讲述了Python使用sax模块解析XML文件。分享给大家供大家参考,具体如下:

XML样例:

<?xml version="1.0"?>
<collection shelf="New Arrivals">
  <movie title="Enemy Behind">
    <type>War, Thriller</type>
    <format>DVD</format>
    <year>2003</year>
    <rating>PG</rating>
    <stars>10</stars>
    <description>Talk about a US-Japan war</description>
  </movie>
  <movie title="Transformers">
    <type>Anime, Science Fiction</type>
    <format>DVD</format>
    <year>1989</year>
    <rating>R</rating>
    <stars>8</stars>
    <description>A schientific fiction</description>
  </movie>
    <movie title="Trigun">
    <type>Anime, Action</type>
    <format>DVD</format>
    <episodes>4</episodes>
    <rating>PG</rating>
    <stars>10</stars>
    <description>Vash the Stampede!</description>
  </movie>
  <movie title="Ishtar">
    <type>Comedy</type>
    <format>VHS</format>
    <rating>PG</rating>
    <stars>2</stars>
    <description>Viewable boredom</description>
  </movie>
</collection>

SAX解析代码展示:

from xml import sax
class MovieHandler(sax.ContentHandler):
  def __init__(self):
    # 初始化数据,并增加一个当前数据
    self.CurrentData = ""
    self.type = ""
    self.format = ""
    self.year = ""
    self.rating = ""
    self.stars = ""
    self.description = ""
  # 文档启动的时候调用
  def startDocument(self):
    print('XML开始解析中...')
  # 元素开始事件处理
  def startElement(self, name, attrs):
    self.CurrentData=name
    if self.CurrentData=='movie':
      print('*********movie*********')
      title=attrs['title']
      print('Title:{0}'.format(title))
  # 内容事件处理
  def characters(self, content):
    if self.CurrentData == "type":
      self.type = content
    elif self.CurrentData == "format":
      self.format = content
    elif self.CurrentData == "year":
      self.year = content
    elif self.CurrentData == "rating":
      self.rating = content
    elif self.CurrentData == "stars":
      self.stars = content
    elif self.CurrentData == "description":
      self.description = content
  # 元素结束事件处理
  def endElement(self, name):
    if self.CurrentData=='type':
      print('Type:{0}'.format(self.type))
    elif self.CurrentData=='format':
      print('Format:{0}'.format(self.format))
    elif self.CurrentData=='year':
      print('Year:{0}'.format(self.year))
    elif self.CurrentData == 'rating':
      print('Rating:{0}'.format(self.rating))
    elif self.CurrentData == 'stars':
      print('Stars:{0}'.format(self.stars))
    elif self.CurrentData == 'description':
      print('Description:{0}'.format(self.description))
    self.CurrentData = ""
  # 文档结束的时候调用
  def endDocument(self):
    print('XML文档解析结束!')
if __name__=='__main__':
  handler=MovieHandler()
  parser = sax.make_parser()
  # parser.setFeature(sax.handler.feature_namespaces, 0)
  parser.setContentHandler(handler)
  parser.parse("sax_test.xml")
Python 相关文章推荐
python 爬取微信文章
Jan 30 Python
django DRF图片路径问题的解决方法
Sep 10 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
python3 requests库文件上传与下载实现详解
Aug 22 Python
对python中assert、isinstance的用法详解
Nov 27 Python
用Python绘制漫步图实例讲解
Feb 26 Python
python下对hsv颜色空间进行量化操作
Jun 04 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 Python
详解小白之KMP算法及python实现
Apr 04 #Python
Python魔法方法功能与用法简介
Apr 04 #Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 #Python
pandas删除指定行详解
Apr 04 #Python
详解python之heapq模块及排序操作
Apr 04 #Python
python实现kmp算法的实例代码
Apr 03 #Python
详解python多线程之间的同步(一)
Apr 03 #Python
You might like
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
js 目录列举函数
2008/11/06 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
python一些性能分析的技巧
2020/08/30 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
大学生入党自我鉴定
2013/10/31 职场文书
营销与策划专业毕业生求职信
2013/11/01 职场文书
决心书标准格式
2014/03/11 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
就业意向书范本
2015/05/11 职场文书
我的中国梦主题班会
2015/08/14 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
mysql部分操作
2021/04/05 MySQL
Nginx反向代理配置的全过程记录
2021/06/22 Servers
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
MySQL数据库查询之多表查询总结
2022/08/05 MySQL