python sax方式解析xml
来源:互联网 发布:hexdump windows 编辑:程序博客网 时间:2024/05/02 00:15
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)
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()>0for _,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")测试结果:
0 0
- python sax方式解析xml
- SAX方式解析XML
- SAX方式解析XML
- XML解析-SAX方式
- XML解析补充---SAX方式
- android sax解析 xml方式
- SAX方式创建/解析xml
- 用sax方式解析xml
- 用SAX 方式解析 XML
- SAX方式解析XML详解
- SAX方式进行XML解析
- 应用 SAX 方式解析 XML
- 应用 SAX 方式解析 XML
- SAX方式解析XML文档
- 解析XML方式-DOM,SAX
- xml解析-jaxp-sax方式
- 使用SAX方式解析XML
- sax方式解析xml文档
- linux杂谈(十):初次接触selinux
- 出差回来对公司开发工作的感想
- 异步ping的实现,如何在10秒内ping完20000个设备
- 1.01一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
- The difference between intent and events
- python sax方式解析xml
- activity
- 安卓 再按一次返回键退出
- android之intent部分应用
- 关于富士通DPK200G打印增值税发票的设置方法
- Image uImage与zImage的区别
- 方法的重写
- 动态内存分配管理(四)
- 设计模式初涉