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实现的检测web服务器健康状况的小程序
Sep 17 Python
Python实现单词翻译功能
Jun 06 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
pytorch进行上采样的种类实例
Feb 18 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
教你使用TensorFlow2识别验证码
Jun 11 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执行速度全攻略
2006/10/09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
理解javascript async的用法
2017/08/22 Javascript
React优化子组件render的使用
2019/05/12 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
python 布尔操作实现代码
2013/03/23 Python
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
对python的输出和输出格式详解
2018/12/08 Python
Python Selenium参数配置方法解析
2020/01/19 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
有趣的广告词
2014/03/18 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
golang中的空接口使用详解
2021/03/30 Python
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript