python sax方式解析xml
2014-04-27 22:05
483 查看
dom方式在解析xml数据时是将整个文档树加载到内存中,因此在解析大型一点的xml数据时没什么优势,这个时候可以考虑使用sax的方式解析
首先要实现自己的xml.sax.handler.ContentHandler内容处理者类
主要是重载以下方法:
def __init__(self):
xml.sax.handler.ContentHandler.__init(self)#初始化方法
def startDocument(self):#开始解析文档
print("start handler document")
def endDocument(self):#结束解析文档
print("end handler document")
def startElement(self,name,attrs):#开始解析节点
print(name,attrs)
def endElement(self,name):#结束解析节点
print("end element",name)
def characters(self,content):#解析内容
print("content",content)
其中attrs是节点中的属性类型是:xml.sax.xmlreader.AttributesImpl
可以通过attrs.getLength()或者attrs.__len__()>0来判断是否还有属性
attrs.getNames()返回一个含有属性名的list 然后可以根据属性名取得类型,值
for _,attrName in enumerate(attrs):
attrs.getValue(attrName)
首先要实现自己的xml.sax.handler.ContentHandler内容处理者类
主要是重载以下方法:
def __init__(self):
xml.sax.handler.ContentHandler.__init(self)#初始化方法
def startDocument(self):#开始解析文档
print("start handler document")
def endDocument(self):#结束解析文档
print("end handler document")
def startElement(self,name,attrs):#开始解析节点
print(name,attrs)
def endElement(self,name):#结束解析节点
print("end element",name)
def characters(self,content):#解析内容
print("content",content)
其中attrs是节点中的属性类型是:xml.sax.xmlreader.AttributesImpl
可以通过attrs.getLength()或者attrs.__len__()>0来判断是否还有属性
attrs.getNames()返回一个含有属性名的list 然后可以根据属性名取得类型,值
for _,attrName in enumerate(attrs):
attrs.getValue(attrName)
class xmlContentHandler(xml.sax.handler.ContentHandler): def __init__(self): xml.sax.handler.ContentHandler.__init__(self) def startDocument(self): print("start handler documtnet") def endDocument(self): print("end handler document") def startElement(self,name,attrs): print("当前处理节点:",name) if attrs.__len__() > 0:#attrs.getLength()>0 for _,attr in enumerate(attrs.getNames()): print(name,"节点属性",attr,attrs.getValue(attr)) else: print(name,"节点不包含属性") def endElement(self,name): print("当前处理节点:",name,"处理完") def characters(self,content): content =content.strip().replace("\n","").replace("\r","") if "" != content: print("节点内容",content)
saxParser = xml.sax.make_parser() handler = xmlContentHandler() saxParser.setContentHandler(handler) saxParser.parse("text.xml")测试结果:
相关文章推荐
- Python通过DOM和SAX方式解析XML的应用实例分享
- python 解析xml 文件: SAX方式
- [代码笔记] python 之 xml解析_sax:基于事件驱动的解析方式
- Python通过DOM和SAX方式解析XML的应用实例分享
- android解析XML总结(SAX、Pull、Dom三种方式)
- xml多层嵌套解析方法SAX方式(包括网络请求)
- Android解析XML三种方式(PULL、SAX、DOM)
- python之xml解析 SAX解析及元素树解析
- android解析XML总结(SAX、Pull、Dom三种方式)
- Android平台中实现对XML的三种解析方式(DOM 、PULL、 SAX)
- android 解析XML最常用的三种方式;DOM解析,SAX解析,PULL解析
- XML解析之SAX方式解析xml文件
- 详解android解析Xml的三种方式——DOM、SAX以及XMLpull
- 使用SAX方式解析XML
- android解析XML总结-SAX、Pull、Dom三种方式
- XML三种解析方式 SAX、Dom、Pull
- JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较
- android之三种方式解析xml(dom,sax,pull)
- Android三种解析XML方式(SAX,DOM,PULL)
- XML - 十分钟了解XML结构以及DOM和SAX解析方式