`
剑锋凛冽
  • 浏览: 75261 次
  • 性别: 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_elementt_xml.zip_python xml_xml解析 python

    实践中,可能涉及更复杂的操作,如处理命名空间、处理事件驱动的解析(SAX解析),或者使用第三方库如lxml来提升性能。但基本的XML解析和操作都可以通过`ElementTree`模块完成,它是Python处理XML的一个强大工具。

    XML解析实践之DOM解析和SAX解析.rar

    而SAX解析常用于需要高效读取大量XML数据且只关心特定部分的情况,例如日志分析、数据流处理等。 在进行XML解析时,需要注意以下几点: 1. 选择解析器:Java中,有如DOM4J、JAXB、Apache Xerces等库支持DOM解析;...

    SAX解析xml,vdx等文件

    这个文件可能包含了使用SAX解析XML或者vdx文件的具体Java或Python代码,包括设置解析器、注册事件处理器、处理XML事件等步骤。 总的来说,SAX解析xml和vdx文件是针对大文件处理的一种高效策略,通过定制化的事件...

    Python如何对XML 解析

    在Python中使用SAX解析XML,需要导入`xml.sax`模块,并实现`ContentHandler`类的方法,如`startElement`、`endElement`、`characters`等。`startElement`和`endElement`会在遇到元素开始和结束标签时被调用,`...

    python处理XML文档

    Python是一种功能强大的编程语言,广泛应用于数据处理和分析。在处理XML文档时,Python提供了多种...在实际应用中,结合其他Python库如lxml(提供更丰富的XPath支持和SAX解析),可以进一步提高XML处理的灵活性和性能。

    python读取XML文件资料集合

    Python 语言是使用 XML 文档的理想语言之一,它具有强大的文本操作能力和灵活的脚本语言特点。Python 中的 XML 工具可以帮助语法分析、处理和生成 XML。关于 XML,要记住一个总体概念:可以验证或非验证方式处理 XML...

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

    sax模块是Python标准库中用于解析XML文档的一个工具包,它遵循SAX(简单API for XML)规范,采用事件驱动模型来处理XML文档。相较于DOM(Document Object Model)方式,sax模块在内存占用和性能方面具有明显优势。 ...

    pythonxml:重温Python的XML工具l:

    - **简介**:`xmllib` 是Python中最基础的XML解析器之一,它是一个非验证性的低级解析器,主要用于简单的XML文档解析。通过继承 `xmllib.XMLParser` 类并覆盖其方法,可以实现对特定元素和实体的自定义处理逻辑。 - ...

    xml.zip_XML解析_xml_解析xml

    Python提供了两个内置的XML处理库:`xml.dom.minidom`(DOM解析)和`xml.sax`(SAX解析)。以下是一些基本用法: ```python # DOM解析 from xml.dom.minidom import parse doc = parse('example.xml') title = doc....

    xml的解析例子

    在`TestXml.py`中,可能包含类似上述的DOM或SAX解析代码,用于处理XML数据。需要注意的是,实际应用中,可能还需要处理命名空间、错误处理、自定义解析逻辑等问题。 总之,XML解析是处理XML数据的关键步骤,根据...

    python 解析xml

    ### Python 解析XML:SAX与DOM详解 在IT领域,特别是Web开发和数据处理中,XML(可扩展标记语言)是一种重要的数据交换格式。它因其结构化特性、跨平台兼容性和灵活性而受到广泛欢迎。Python作为一种强大的编程语言...

    pythonxml库

    Python XML库是Python编程语言中用于处理XML数据的工具集合,它们使得在Python程序中解析、生成、修改和操作XML文档变得更为便捷高效。在Python 2.4版本中,XML处理已经得到了广泛的支持,提供了多种库来满足不同的...

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

    SAX解析器是一种基于事件的解析器,它不需要一次性将整个XML文档加载到内存中,而是随着文档被读取而触发一系列事件。这种方式非常适合解析非常大的XML文件,因为它的内存消耗相对较低。下面是一个使用SAX解析上述...

    python and XML

    - **SAX解析器**:讨论SAX解析器的工作原理及应用场景,特别是在处理大型XML文档时的优势。 - **lxml库的使用**:深入讲解lxml库的功能和优势,包括XPath查询、XSLT转换等功能。 4. **高级主题** - **XPath查询*...

    解析xml链接

    相反,SAX解析器是事件驱动的,它逐行读取XML文件,触发事件(如开始元素、结束元素等),这在处理大文件时更为高效,但需要编写更复杂的代码来处理事件。 以`http://rss.sina.com.cn/news/allnews/auto.xml`为例,...

    XML解析代码实现.rar

    Python中,`xml.dom.minidom`库支持DOM解析,而`xml.sax`库则提供了SAX解析功能。 对于压缩包中的文件,可能包含了使用Java或Python实现的XML解析示例。这些示例可能包括了创建解析器、注册事件处理器、读取XML文件...

    解析XML--自己

    在Python中,我们可以使用`xml.dom.minidom`库进行DOM解析,`xml.sax`库进行SAX解析。例如,使用DOM解析XML文档: ```python import xml.dom.minidom doc = xml.dom.minidom.parse("example.xml") root = doc....

Global site tag (gtag.js) - Google Analytics