转—Python模块学习——SAX解析器

本文是一篇关于PyXML的详细学习笔记,介绍了如何使用PyXML中的SAX分析器来处理XML文档。重点阐述了ContentHandler、DTDHandler和ErrorHandler类的方法,提供了使用Python标准xml.sax模块处理XML文档的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyXML学习笔记,转自:http://man.lupaworld.com/content/manage/ringkee/pyxml.htm

整理:Jims of 肥肥世家

发布时间:2005年01月11日

更新时间:2006年03月13日

Abstract

PyXML是python中的一个XML工具集,里面包括有很多处理XML文档的程序,如PySAX,Expat和xmlproc等。Python通过该套工具能很好地处理xml文档,为了在zope中使用xml文档,我开始了学习该套工具的旅程,快跟我来吧,一起感受XML的革命浪潮。

 

Table of Contents

1. SAX分析器
1.1. 示例

Chapter 1. SAX分析器

 

Table of Contents

1.1. 示例

XML简单API(SAX,Simple API for XML)是一个XML分析器的标准,基于事件驱动方式。

Table 1.1. ContentHandler类的方法

方法描述
startDocument()在文档开头触发
endDocument()在文档结尾触发
startElement(name,attrs)遇到开始元素时触发,name是元素名,attrs是元素属性字典
endElement(name)遇到结束元素时触发,name是元素名
startElementNS(name,qname,attrs)处理名字空间,遇到开始元素时触发,name是元素名,是一个元组,包含URI和本地名,如namespace:title返回(‘namespace','title')。qname是从XML中标识的原始元素名,attrs是元素属性字典。
endElementNS(name,qname)处理名字空间,遇到结尾元素时触发,name和qname的含义同上
characters(content)遇到字符数据时触发
processingInstruction(target,data)在标识处理指令时触发
skippedEntity(name)在跳过实体时触发

Table 1.2. DTDHandler类的方法

方法描述
notationDecl(name,publicId,systemId)注释声明触发
unparsedEntityDecl(name,publicId,systemId,ndata)非分析实体触发

Table 1.3. ErrorHandler类的方法

方法描述
error(exception)在分析器遇到可恢复错误时调用,默认情况下,这个方法通过SAXException类发出一个异常。
fatalError(exception)在分析器遇到致命错误时调用,调用该方法时,分析时停止
warning(exception)在分析器遇到警告时调用,返回后,分析器继续。

1.1. 示例

 

下面是一个使用python标准的xml.sax模块处理xml文档的示例。

#!/usr/bin/python
#-*- encoding:utf-8 -*-

from xml.sax import make_parser
from xml.sax import ContentHandler
import string

class MyHandler(ContentHandler):
        isHi=""
        hi=""
        def startElement(self,name,attrs):    #遇到元素开头时执行,如<para>
                if name=="hi":
                        self.isHi=1
        def endElement(self,name):            #遇到元素尾时执行,如</para>
                if name=="hi":
                        self.isHi=""
        def characters(self,content):         #获取元素内容
                if self.isHi:
                        self.hi+=content
ch = MyHandler()                              #生成ContentHandler的实例
saxparser = make_parser()                     #创建sax处理器
saxparser.setContentHandler(ch)               #关联sax处理器与ContentHandler实例
saxparser.parse('weather.xml')                #处理weather.xml文档

print "hi:",ch.hi                             #打印ch.hi的值

转载于:https://www.cnblogs.com/keke-xiaoxiami/articles/3805751.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值