Python使用sax模块解析XML文件示例
本文实例讲述了Python使用sax模块解析XML文件。分享给大家供大家参考,具体如下:
XML样例:
War,Thriller DVD 2003 PG 10 TalkaboutaUS-Japanwar Anime,ScienceFiction DVD 1989 R 8 Aschientificfiction Anime,Action DVD 4 PG 10 VashtheStampede! Comedy VHS PG 2 Viewableboredom
SAX解析代码展示:
fromxmlimportsax classMovieHandler(sax.ContentHandler): def__init__(self): #初始化数据,并增加一个当前数据 self.CurrentData="" self.type="" self.format="" self.year="" self.rating="" self.stars="" self.description="" #文档启动的时候调用 defstartDocument(self): print('XML开始解析中...') #元素开始事件处理 defstartElement(self,name,attrs): self.CurrentData=name ifself.CurrentData=='movie': print('*********movie*********') title=attrs['title'] print('Title:{0}'.format(title)) #内容事件处理 defcharacters(self,content): ifself.CurrentData=="type": self.type=content elifself.CurrentData=="format": self.format=content elifself.CurrentData=="year": self.year=content elifself.CurrentData=="rating": self.rating=content elifself.CurrentData=="stars": self.stars=content elifself.CurrentData=="description": self.description=content #元素结束事件处理 defendElement(self,name): ifself.CurrentData=='type': print('Type:{0}'.format(self.type)) elifself.CurrentData=='format': print('Format:{0}'.format(self.format)) elifself.CurrentData=='year': print('Year:{0}'.format(self.year)) elifself.CurrentData=='rating': print('Rating:{0}'.format(self.rating)) elifself.CurrentData=='stars': print('Stars:{0}'.format(self.stars)) elifself.CurrentData=='description': print('Description:{0}'.format(self.description)) self.CurrentData="" #文档结束的时候调用 defendDocument(self): print('XML文档解析结束!') if__name__=='__main__': handler=MovieHandler() parser=sax.make_parser() #parser.setFeature(sax.handler.feature_namespaces,0) parser.setContentHandler(handler) parser.parse("sax_test.xml")
PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线