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 相关文章推荐
django批量导入xml数据
Oct 16 Python
python中lambda()的用法
Nov 16 Python
Python中super函数的用法
Nov 17 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
Python里字典的基本用法(包括嵌套字典)
Feb 27 Python
numpy.where() 用法详解
May 27 Python
详解python编译器和解释器的区别
Jun 24 Python
python中比较两个列表的实例方法
Jul 04 Python
python实现音乐播放器 python实现花框音乐盒子
Feb 25 Python
Python实现aes加密解密多种方法解析
May 15 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 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
逐步提升php框架的性能
2008/01/10 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
机器学习实战之knn算法pandas
2019/06/22 Python
python实现简单颜色识别程序
2020/02/19 Python
python实现canny边缘检测
2020/09/14 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
无犯罪记录证明
2014/09/19 职场文书
青年教师个人总结
2015/02/11 职场文书
中学生自我评价2015
2015/03/03 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
活动主持人开场白
2015/05/28 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android