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封装对象实现时间效果
Apr 23 Python
haskell实现多线程服务器实例代码
Nov 26 Python
Python yield 小结和实例
Apr 25 Python
python常见的格式化输出小结
Dec 15 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
python异步Web框架sanic的实现
Apr 27 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
python palywright库基本使用
Jan 21 Python
pycharm代码删除恢复的方法
Jun 26 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设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
AJAX的使用方法详解
2017/04/29 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
浅谈js的异步执行
2016/10/18 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
Python的多态性实例分析
2015/07/07 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
Python3+Appium安装使用教程
2019/07/05 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
工商管理专业学生的自我评价
2013/10/01 职场文书
导游词之日月潭
2019/11/05 职场文书