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从入门到精通(DAY 2)
Dec 20 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
numpy数组拼接简单示例
Dec 15 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
Python 占位符的使用方法详解
Jul 10 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
python异常中else的实例用法
Jun 15 Python
Python语言规范之Pylint的详细用法
Jun 24 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
[原创]图片分页查看
2006/08/28 Javascript
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
python根据日期返回星期几的方法
2015/07/06 Python
python利用正则表达式提取字符串
2016/12/08 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
10个Python小技巧你值得拥有
2018/09/29 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python与字符编码问题
2019/05/24 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
python几种常用功能实现代码实例
2019/12/25 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
UNIX文件系统分类
2014/11/11 面试题
自荐书4要点
2014/01/25 职场文书
大学生职业规划书的范本
2014/02/18 职场文书
应聘英语教师求职信
2014/04/24 职场文书
体育教师求职信
2014/06/30 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript