`
剑锋凛冽
  • 浏览: 73575 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Python处理XML之SAX解析

阅读更多

仅作备忘

 

#coding=utf-8
#XML处理
#SAX处理XML的方式和Java中的SAX解析器一样,从ContentHandler方法中继承,并处理startDocument、endDocument等信息
from xml.sax import *
#必须从xml.sax包中导入所有方法和变量
class UserDecodeHandler(ContentHandler):
#与Java的SAXParser基本一致,处理方法一样
	users=None
	map=None
	temp=""
	currenttag=None
	user=None
	#注意Python的特殊格式,必须有self作为第一个参数
	def startDocument(self):
		print "start xml document"
		
	def endDocument(self):
		print "end xml document"
	#name=当前处理的标签名,attrs以dict的格式存放标签的所有属性
	def startElement(self,name,attrs):
		if name=="users":
			self.users=[]
		elif name=="user":
			self.user={"name":attrs['name']}
		self.currenttag=name
	
	def endElement(self,name):
		if name=="user":
			self.users.append(self.user)
		elif name=="description":
			self.user.update({"description":self.temp.strip()})
			self.temp=""
		self.currenttag=None
	#content表示正在处理中的数据	
	def characters(self,content):
		self.temp+=content
		
#调用make_parser方法创建一个SAX解析器
# '''
print "===============SAX方式解析XML文档==================="
parser=make_parser()
handler=UserDecodeHandler()
parser.setContentHandler(handler)
data=""
with open("xmldata.xml") as file:
	data=file.read().strip()
import StringIO
#StringIO模块用于将字符串转换成流数据,类似于Java的ByteArrayOutputStream和ByteArrayInputStream
parser.parse(StringIO.StringIO(data))

for item in handler.users:
	print "======================="
	for i in item.items():
		key,value=i
		print key,value.encode("gbk")
#'''

 处理的xml内容如下,Python对XML的格式要求不那么严格,不要求必须有xml的DTD说明

 

<users>
	<user name="zhang">
		<description>测试
		数据
		</description>
	</user>
	<user name="wang">
		<description>测试数据</description>
	</user>
</users>
分享到:
评论

相关推荐

    Python3基于sax解析xml操作示例

    本文实例讲述了Python3基于sax解析xml操作。分享给大家供大家参考,具体如下: python使用SAX解析xml SAX是一种基于事件驱动的API。 利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器。 解析器负责读取XML文档,...

    Python使用sax模块解析XML文件示例

    主要介绍了Python使用sax模块解析XML文件,结合实例形势分析了Python使用sax模块针对xml文件进行读取、解析、内容处理等相关操作技巧,需要的朋友可以参考下

    Python通过DOM和SAX方式解析XML的应用实例分享

    主要介绍了Python通过DOM和SAX方式解析XML的应用实例分享,针对这两种解析方式Python都有相关的模块可供使用,需要的朋友可以参考下

    Python XML 解析

    Python XML 解析 什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language)。 你可以通过本站学习 XML 教程 XML 被设计用来传输和存储数据。...Python 有三种方法解析 XML,SAX,DOM,以及 Element

    python实现XML解析的方法解析

    这篇文章主要介绍了python实现XML解析的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 三种方法:一是xml.dom.*模块,它是W3C DOM API的实现,若需要...

    Python使用minidom读写xml的方法

    本文实例讲述了Python使用minidom读写xml的方法。分享给大家供大家参考。具体分析如下: 一 python提供的xml支持 ...python还提供了python独特的xml解析方法,相比于SAX和DOM更容易使用和更加快速,此方法为Elemen

    python 解析xml

    python解析xml的手册 包含SAX和DOM两部分

    在Python中处理XML的教程

    XML虽然比JSON复杂,在Web中应用也不如以前多了,...在Python中使用SAX解析XML非常简洁,通常我们关心的事件是start_element,end_element和char_data,准备好这3个函数,然后就可以解析xml了。 举个例子,当SAX解析

    python解析xml模块封装代码

    下面介绍python解析xml文件的几种方法,使用python模块实现。 方式1,python模块实现自动遍历所有节点: 复制代码 代码如下:#!/usr/bin/env python # -*- coding: utf-8 -*- from xml.sax.handler i

    使用python解析xml成对应的html示例分享

    -*- coding: utf-8 -*-#—————————————# 程序:XML解析器# 版本:01.0# 作者:mupeng# 日期:2013-12-18# 语言:Python 2.7# 功能:将xml解析成对应的html# 注解:该程序用xml.sax模块的parse...

    用Python解析XML的几种常见方法的介绍

     python解析XML常见的有三种方法:一是xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合,注意xml.dom包里面有许多模块,须区分它们间的不同;二是xml.sax.*模块,它是SAX API的实现,这个...

    深入解读Python解析XML的几种方式

    在自带的标准库中,Python提供了大量可以用于处理XML语言的包和工具,数量之多,甚至让Python编程新手无从选择。 本文将介绍深入解读利用Python语言解析XML文件的几种方式,并以笔者推荐使用的ElementTree模块为例,...

    使用PYTHON创建XML文档

    当用GOOGLE查的时候,内容几乎都是一样的。但是你想要的东西,一个也没有。... 复制代码 代码如下: import xml.dom.minidom from xml.dom.DOMImplementation import implementation import xml.sax.writer import x

    musicxml_parser:Python MusicXML解析器,以将mxml文件作为钢琴谱表示法加载。 我的钢琴

    parser.scoreToPianoroll import scoreToPianorollscore_path = "test.xml"quantization = 16pianoroll, articulation = scoreToPianoroll(score_path, quantization)描述 : 基于XML的基于SAX分析器的音乐XML解析器...

    Python如何对XML 解析

    什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集...常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。 Python 有三种方法解析 X

    XML必知必会:Java、C#、Python多种语言解析XML文档

    解析XML文档概述、DOM解析XML、SAX解析XML 第8章 Java语言解析XML DOM4J概述、示例:遍历节点、示例:插入节点、示例:删除节点 第9章 Python语言解析XML ElementTree模块概述、示例:遍历节点、示例:插入节点、...

    横向对比分析Python解析XML的四种方式

    在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受。 在网络搜索后发现,目前应用比较广泛,且效率相对较高的ElementTree也是...

Global site tag (gtag.js) - Google Analytics