pyxml
上一篇 /
下一篇 2011-06-09 10:20:46
/ 个人分类:python
1安装:
Windows下一定要找和你安装的python版本匹配的pyxml,我的python2.6
PyXML 0.8.4 for Python 2.6, Windows Installer (1,006 KB)
http://www.somethinkodd.com/oddthinking/2009/10/31/windows-installer-for-pyxml-0-8-4-for-python-2-6-x/
2.使用
Abstract
PyXML 是python中的一个XML工具集,里面包括有很多处理XML文档的程序,如PySAX,Expat和xmlproc等。Python通过该套工具能很 好地处理xml文档,为了在zope中使用xml文档,我开始了学习该套工具的旅程,快跟我来吧,一起感受XML的革命浪潮。
Table of Contents
- 1. SAX分析器
- 1.1. 示例
List of Tables
- 1.1. ContentHandler类的方法
- 1.2. DTDHandler类的方法
- 1.3. ErrorHandler类的方法
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) | 在分析器遇到警告时调用,返回后,分析器继续。 |
下面是一个使用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的值
这里有一幅显示sax处理过程的图片。
注:在命名py文件时千万不要命名称系统库文件,比如xml.py,这样在impot xml时会出错,编译也过不去。
收藏
举报
TAG: