Python:使用基于事件驱动的SAX解析XML(3)

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):
      if self.CurrentData == "type":
        print "Type:", self.type
      elif self.CurrentData == "format":
        print "Format:", self.format
      elif self.CurrentData == "year":
        print "Year:", self.year
      elif self.CurrentData == "rating":
        print "Rating:", self.rating
      elif self.CurrentData == "stars":
        print "Stars:", self.stars
      elif self.CurrentData == "description":
        print "Description:", self.description
      self.CurrentData = ""

# 内容事件处理
  def characters(self, content):
      if self.CurrentData == "type":
        self.type = content
      elif self.CurrentData == "format":
        self.format = content
      elif self.CurrentData == "year":
        self.year = content
      elif self.CurrentData == "rating":
        self.rating = content
      elif self.CurrentData == "stars":
        self.stars = content
      elif self.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: Enemy Behind Type: War, Thriller Format: DVD Year: 2003 Rating: PG Stars: 10 Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction 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

《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版]

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]

Python脚本获取Linux系统信息

Ubuntu下用Python搭建桌面算法交易研究环境

Python 语言的发展简史

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a48cfd11997022d2e638ac15b92cf5fb.html