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操作的在线工具供大家参考使用:
在线