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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
Python开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
详细介绍Python的鸭子类型
Sep 12 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
Python装饰器的执行过程实例分析
Jun 04 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
python清除字符串前后空格函数的方法
Oct 21 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
python银行系统实现源码
Oct 25 Python
keras 多任务多loss实例
Jun 22 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
vuejs绑定class和style样式
2017/04/11 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
Python 学习笔记
2008/12/27 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
python简单读取大文件的方法
2016/07/01 Python
python实现QQ批量登录功能
2019/06/19 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
django 实现简单的插入视频
2020/04/07 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
Python 多进程原理及实现
2020/12/21 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
.NET面试题:什么是反射
2016/09/30 面试题
世界经理人咨询有限公司面试
2014/09/23 面试题
机电专业体育教师求职信
2013/09/21 职场文书
新员工培训个人的自我评价
2013/10/09 职场文书
物业管理计划书
2014/01/10 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
安卓程序员求职信
2014/02/28 职场文书
生产文员岗位职责
2014/04/05 职场文书
班组建设经验交流材料
2014/05/12 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
统计员岗位职责
2015/02/11 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书