Python 解析XML实例
实例
#!/usr/bin/python# -*- coding: UTF-8 -*-importxml.saxclassMovieHandler(xml.sax.ContentHandler): def__init__(self): self.CurrentData = "" self.type = "" self.format = "" self.year = "" self.rating = "" self.stars = "" self.description = "" # 元素开始事件处理 defstartElement(self, tag, attributes): self.CurrentData = tag iftag == "movie": print"*****Movie*****" title = attributes["title"] print"Title:", title # 元素结束事件处理 defendElement(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 = "" # 内容事件处理 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 if(__name__ == "__main__"): # 创建一个 XMLReader parser = xml.sax.make_parser() # turn off namepsaces 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