Python 解析XML实例
实例
#!/usr/bin/python3
importxml.sax
class MovieHandler(xml.sax.ContentHandler):
def__init__(self):
self.CurrentData=""
self.type=""
self.format=""
self.year=""
self.rating=""
self.stars=""
self.description=""
# 元素开始调用
def startElement(self, tag, attributes):
self.CurrentData= tag
if tag =="movie":
print("*****Movie*****")
title = attributes["title"]
print("Title:", title)
# 元素结束调用
def endElement(self, tag):
ifself.CurrentData=="type":
print("Type:",self.type)
elifself.CurrentData=="format":
print("Format:",self.format)
elifself.CurrentData=="year":
print("Year:",self.year)
elifself.CurrentData=="rating":
print("Rating:",self.rating)
elifself.CurrentData=="stars":
print("Stars:",self.stars)
elifself.CurrentData=="description":
print("Description:",self.description)
self.CurrentData=""
# 读取字符时调用
def characters(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
if( __name__ =="__main__"):
# 创建一个 XMLReader
parser=xml.sax.make_parser()
# 关闭命名空间
parser.setFeature(xml.sax.handler.feature_namespaces,0)
# 重写 ContextHandler
Handler = MovieHandler()
parser.setContentHandler( Handler )
parser.parse("movies.xml")
以上代码执行结果如下:
*****Movie*****
Title:EnemyBehind
Type:War,Thriller
Format: DVD
Year:2003
Rating: PG
Stars:10
Description:Talk about a US-Japan war
*****Movie*****
Title:Transformers
Type:Anime,ScienceFiction
Format: DVD
Year:1989
Rating: R
Stars:8
Description: A schientific fiction
*****Movie*****
Title:Trigun
Type:Anime,Action
Format: DVD
Rating: PG
Stars:10
Description:Vash the Stampede!
*****Movie*****
Title:Ishtar
Type:Comedy
Format: VHS
Rating: PG
Stars:2
Description:Viewable boredom