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使用7z解压软件备份文件脚本分享
Feb 21 Python
编程语言Python的发展史
Sep 26 Python
python的re模块应用实例
Sep 26 Python
好的Python培训机构应该具备哪些条件
May 23 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 Python
python数据类型可变不可变知识点总结
Mar 06 Python
python删除某个目录文件夹的方法
May 26 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
浅析python中的del用法
Sep 02 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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 数组排序方法总结 推荐收藏
2010/06/30 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python多线程与多进程及其区别详解
2019/08/08 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
八年级历史教学反思
2014/01/10 职场文书
四年级语文教学反思
2014/02/05 职场文书
保健品市场营销方案
2014/03/31 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
天下第一关导游词
2015/02/06 职场文书