xml数据处理--sax模块使用
2014-04-29 09:30
531 查看
1.xml文件的数据如下:
现要将个人数据保存到文件,使用sax模块进行处理,代码如下。
xml.sax中主要有两个函数用来处理xml。
parse(source,handler,errorHandler=<xml.sax.handler.ErrorHandler instance>)
source:file object、file-like object。
handler:ContentHandler、child class for ContentHandler。
parseString(string,handler,errorHandler=<xml.sax.handler.ErrorHandler instance>)
区别:区别主要在于数据的来源,第一个函数数据来源于IO数据流,第二个函数来源于字符串。
xml.sax默认的handler是ContentHandler,这个handler包含了事件回调器。一般会对这个类的回调器进行重写来进行数据处理。
expat的解析过程与sax类似,稍后会有关于expat的使用方法介绍,你会发现用法非常
相似。
本文出自 “fly天地” 博客,请务必保留此出处http://liuping0906.blog.51cto.com/2516248/1404318
<PERSONS> <haha> <person> <id>100000</id> <sex>男</sex> <address>北京,海淀区</address> <fansNum>437</fansNum> <summary>1989</summary> <wbNum>333</wbNum> <gzNum>242</gzNum> <blog>null</blog> <edu>大学</edu> <work></work> <renZh>1</renZh> <brithday>2月14日</brithday> </person> <person> <id>100001</id> <sex>男</sex> <address>北京,海淀区</address> <fansNum>427</fansNum> <summary>1991</summary> <wbNum>333</wbNum> <gzNum>242</gzNum> <blog>null</blog> <edu>大学</edu> <work></work> <renZh>1</renZh> <brithday>3月14日</brithday> </person> </haha> </PERSONS>
现要将个人数据保存到文件,使用sax模块进行处理,代码如下。
# coding: utf-8 import sys,os reload(sys) sys.setdefaultencoding('utf-8') from xml.sax import handler,parseString class PersonHandler(handler.ContentHandler): def __init__(self,fp): self.fp = fp self.person = [] self.current_tag = "" self.flag = 0 def startElement(self, name, attr): if name == "person": self.person = [] self.current_tag = name self.flag = 1 def endElement(self, name): if name == "person": for value in self.person: if value.keys()[0] != 'person': print >>self.fp,value.keys()[0]+":"+str(value.values()[0])+"|", print >>self.fp self.flag = 0 def characters(self, content): if self.flag: self.person.append({self.current_tag: content}) if __name__ == "__main__": f = open("1.xml") fp = open('data','w') parseString(f.read(), PersonHandler(fp)) f.close() fp.close()
xml.sax中主要有两个函数用来处理xml。
parse(source,handler,errorHandler=<xml.sax.handler.ErrorHandler instance>)
source:file object、file-like object。
handler:ContentHandler、child class for ContentHandler。
parseString(string,handler,errorHandler=<xml.sax.handler.ErrorHandler instance>)
区别:区别主要在于数据的来源,第一个函数数据来源于IO数据流,第二个函数来源于字符串。
xml.sax默认的handler是ContentHandler,这个handler包含了事件回调器。一般会对这个类的回调器进行重写来进行数据处理。
expat的解析过程与sax类似,稍后会有关于expat的使用方法介绍,你会发现用法非常
相似。
本文出自 “fly天地” 博客,请务必保留此出处http://liuping0906.blog.51cto.com/2516248/1404318
相关文章推荐
- xml数据处理--expat模块使用
- xml数据处理--ElementTree模块使用
- asp中使用MSXML2.DOMDocument处理XML数据时的注意事项
- 使用 SAX 处理 XML 文档
- 使用原生Ajax处理HTML,XML,JSON数据
- 使用 SAX 处理 XML 文档(转载)
- 使用 SAX 处理 XML 文档
- 使用JDOM处理XML数据之PDF篇(一)
- 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解
- 使用 SAX 处理 XML 解析中的错误
- 使用 SAX 处理 XML 文档(转载)
- 使用Boost.PropertyTree处理XML、JSON和INI数据 - 做一个优雅的程序员 - 博客频道 - CSDN.NET
- 使用Java处理XML数据
- ActionScript 3.0 Step By Step系列(七):使用XML和XMLList类处理XML数据
- 使用JDOM处理XML数据之PDF篇(二)
- jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
- 使用Boost.PropertyTree处理XML、JSON和INI数据
- 使用VTD-XML简化XML处理-克服DOM及SAX缺点的新选择
- 使用XMLBeans处理XML数据和文档入门
- 使用XMLBeans处理XML数据和文档入门 作者:肖菁 (dev2dev ID: powerise) 湖南省长沙铁道学院科创计算机系统集成有限公司软件中心软件工程师