仅作备忘
#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操作。分享给大家供大家参考,具体如下: python使用SAX解析xml SAX是一种基于事件驱动的API。 利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器。 解析器负责读取XML文档,...
实践中,可能涉及更复杂的操作,如处理命名空间、处理事件驱动的解析(SAX解析),或者使用第三方库如lxml来提升性能。但基本的XML解析和操作都可以通过`ElementTree`模块完成,它是Python处理XML的一个强大工具。
而SAX解析常用于需要高效读取大量XML数据且只关心特定部分的情况,例如日志分析、数据流处理等。 在进行XML解析时,需要注意以下几点: 1. 选择解析器:Java中,有如DOM4J、JAXB、Apache Xerces等库支持DOM解析;...
这个文件可能包含了使用SAX解析XML或者vdx文件的具体Java或Python代码,包括设置解析器、注册事件处理器、处理XML事件等步骤。 总的来说,SAX解析xml和vdx文件是针对大文件处理的一种高效策略,通过定制化的事件...
在Python中使用SAX解析XML,需要导入`xml.sax`模块,并实现`ContentHandler`类的方法,如`startElement`、`endElement`、`characters`等。`startElement`和`endElement`会在遇到元素开始和结束标签时被调用,`...
Python是一种功能强大的编程语言,广泛应用于数据处理和分析。在处理XML文档时,Python提供了多种...在实际应用中,结合其他Python库如lxml(提供更丰富的XPath支持和SAX解析),可以进一步提高XML处理的灵活性和性能。
Python 语言是使用 XML 文档的理想语言之一,它具有强大的文本操作能力和灵活的脚本语言特点。Python 中的 XML 工具可以帮助语法分析、处理和生成 XML。关于 XML,要记住一个总体概念:可以验证或非验证方式处理 XML...
sax模块是Python标准库中用于解析XML文档的一个工具包,它遵循SAX(简单API for XML)规范,采用事件驱动模型来处理XML文档。相较于DOM(Document Object Model)方式,sax模块在内存占用和性能方面具有明显优势。 ...
- **简介**:`xmllib` 是Python中最基础的XML解析器之一,它是一个非验证性的低级解析器,主要用于简单的XML文档解析。通过继承 `xmllib.XMLParser` 类并覆盖其方法,可以实现对特定元素和实体的自定义处理逻辑。 - ...
Python提供了两个内置的XML处理库:`xml.dom.minidom`(DOM解析)和`xml.sax`(SAX解析)。以下是一些基本用法: ```python # DOM解析 from xml.dom.minidom import parse doc = parse('example.xml') title = doc....
在`TestXml.py`中,可能包含类似上述的DOM或SAX解析代码,用于处理XML数据。需要注意的是,实际应用中,可能还需要处理命名空间、错误处理、自定义解析逻辑等问题。 总之,XML解析是处理XML数据的关键步骤,根据...
### Python 解析XML:SAX与DOM详解 在IT领域,特别是Web开发和数据处理中,XML(可扩展标记语言)是一种重要的数据交换格式。它因其结构化特性、跨平台兼容性和灵活性而受到广泛欢迎。Python作为一种强大的编程语言...
Python XML库是Python编程语言中用于处理XML数据的工具集合,它们使得在Python程序中解析、生成、修改和操作XML文档变得更为便捷高效。在Python 2.4版本中,XML处理已经得到了广泛的支持,提供了多种库来满足不同的...
SAX解析器是一种基于事件的解析器,它不需要一次性将整个XML文档加载到内存中,而是随着文档被读取而触发一系列事件。这种方式非常适合解析非常大的XML文件,因为它的内存消耗相对较低。下面是一个使用SAX解析上述...
- **SAX解析器**:讨论SAX解析器的工作原理及应用场景,特别是在处理大型XML文档时的优势。 - **lxml库的使用**:深入讲解lxml库的功能和优势,包括XPath查询、XSLT转换等功能。 4. **高级主题** - **XPath查询*...
相反,SAX解析器是事件驱动的,它逐行读取XML文件,触发事件(如开始元素、结束元素等),这在处理大文件时更为高效,但需要编写更复杂的代码来处理事件。 以`http://rss.sina.com.cn/news/allnews/auto.xml`为例,...
Python中,`xml.dom.minidom`库支持DOM解析,而`xml.sax`库则提供了SAX解析功能。 对于压缩包中的文件,可能包含了使用Java或Python实现的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....