Python 解析XML实例(xml.sax)
已知movies.xml
- <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>
Python 解析XML实例
- # -*- coding: UTF-8 -*-
- import xml.sax
- class MovieHandler( xml.sax.ContentHandler ):
- def __init__(self):
- self.CurrentData = ""
- self.type = ""
- self.format = ""
- self.year = ""
- self.rating = ""
- self.stars = ""
- self.description = ""
- # 元素开始事件处理
- def startElement(self, tag, attributes):
- self.CurrentData = tag
- if tag == "movie":
- print("*****Movie*****")
- title = attributes["title"]
- print("Title:", title)
- # 元素结束事件处理
- def endElement(self, tag):
- if self.CurrentData == "type":
- print ("Type:", self.type)
- elif self.CurrentData == "format":
- print ("Format:", self.format)
- elif self.CurrentData == "year":
- print ("Year:", self.year)
- elif self.CurrentData == "rating":
- print( "Rating:", self.rating)
- elif self.CurrentData == "stars":
- print( "Stars:", self.stars)
- elif self.CurrentData == "description":
- print ("Description:", self.description)
- self.CurrentData = ""
- # 内容事件处理
- 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
- if ( __name__ == "__main__"):
- # 创建一个 XMLReader
- parser = xml.sax.make_parser()
- # turn off namepsaces
- parser.setFeature(xml.sax.handler.feature_namespaces, 0)
- # 重写 ContextHandler
- Handler = MovieHandler()
- parser.setContentHandler( Handler )
- parser.parse("movies.xml")
结果:
- *****Movie*****
- Title: Enemy Behind
- Type: War, Thriller
- Format: DVD
- Year: 2003
- Rating: PG
- Stars: 10
- Description: Talk about a US-Japan war
- *****Movie*****
- Title: Transformers
- Type: Anime, Science Fiction
- Format: DVD
- Year: 1989
- Rating: R
- Stars: 8
- Description: A schientific fiction
- *****Movie*****
- Title: Trigun
- Type: Anime, Action
- Format: DVD
- Rating: PG
- Stars: 10
- Description: Vash the Stampede!
- *****Movie*****
- Title: Ishtar
- Type: Comedy
- Format: VHS
- Rating: PG
- Stars: 2
- Description: Viewable boredom
Python 解析XML实例(xml.sax)的更多相关文章
- python解析VOC的xml文件并转成自己需要的txt格式
在进行神经网络训练的时候,自己标注的数据集往往会有数据量不够大以及代表性不强等问题,因此我们会采用开源数据集作为训练,开源数据集往往具有特定的格式,如果我们想将开源数据集为我们所用的话,就需要对其格式 ...
- python cookbook第三版学习笔记七:python解析csv,json,xml文件
CSV文件读取: Csv文件格式如下:分别有2行三列. 访问代码如下: f=open(r'E:\py_prj\test.csv','rb') f_csv=csv.reader(f) for f in ...
- python 解析与生成xml
xml.etree.ElementTree模块为xml文件的提取和建立提供了简单有效的API.下文中使用ET来代表xml.etree.ElementTree模块. XML是一种内在的分层的数据形式,展 ...
- python解析Yahoo的XML格式的天气预报,获取当天和近期几天的天气:
下面是接口xml格式数据: <rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo=& ...
- Python解析Yahoo的XML格式的天气预报数据
以下是Yahoo天气预报接口xml格式数据: <rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xm ...
- python解析robot framework的output.xml,并生成html
一.背景 Jenkins自动构建RF脚本,生成的RF特有HTML报告不能正常打开. 需求:用Python解析测试报告的xml数据,放在普通HTML文件中打开 二.output.xml数据 三.用pyh ...
- Python解析生成XML-ElementTree VS minidom
OS:Windows 7 关键字:Python3.4,XML,ElementTree,minidom 本文介绍用Python解析生成以下XML: <Persons> <Person& ...
- python 解析xml 文件: SAX方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- [转载] python 解析xml 文件: SAX方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
随机推荐
- java-多态中成员访问特点-父类引用指向子类对象
多态前提: - 要有继承关系. - 要有方法重写. - 要有父类引用指向子类对象. 1.成员变量:编译看左边(父类),运行看左边(父类) 2.成员方法:编译看左边(父类),运行看右边(子类),动态绑定 ...
- java-权限修饰符的区别
说明:所谓访问权限,是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法. 1.Java中的四种访问修饰符:public.protected.default(无修饰符,默认) ...
- linux下使用小票打印
linux下使用小票打印 打印机: Xprinter XP-58IIH指令支持: ESC/POS接口: USB, 蓝牙 Linux系统: Centos7 蓝牙配对很快, 配对好后就是连接状态. 但很快 ...
- gogs打造自己的git
推荐docker安装 //下载镜像 docker pull gogs/gogs // 创建容器 docker run -d --name=gogs -p 10022:22 -p 3000:3000 - ...
- 实验吧—安全杂项——WP之 女神
点击链接下载压缩文件解压后得到 打开TXT文档: 能看出是base64,这么长,那就是转成图片喽~ 地址:http://www.vgot.net/test/image2base64.php? 然后就是 ...
- AC自动机自我理解和模板
给出长度为m的文本 查询 n个单词出现的次数 用kmp 复杂度 n*m*(单词平均长度) 用字典树 复杂度 m*每次字典树遍历的平均深度) AC自动机 复杂度 m (思路可以理解为kmp+字典树 ) ...
- Redis(二)持久化
Redis持久化,分为RDB方式和AOF方式,它们可以单独使用,也可以混用.Redis默认的是使用RDB方式. 一.RDB方式 1.触发快照的方式 RDB方式是在指定时间间隔内某一时间点的数据集快照. ...
- mysql 服务器启用event_scheduler
https://blog.csdn.net/yangzefei1991/article/details/51800867 首先在sql中查询计划事件的状态:SHOW VARIABLES LIKE 'e ...
- 【Jmeter】分布式并发测试
一.前提: 1.最近在做一下压测,但是单台服务器的CPU,内存可能不够支撑压测的项目,这时候,我们可以使用Jmeter分布式压测. 2.本次使用的环境: 1台服务器做master(调度器) 5台服务器 ...
- python.numpy.std()计算矩阵标准差
>>> a = np.array([[1, 2], [3, 4]]) >>> np.std(a) # 计算全局标准差 1.1180339887498949 > ...