回覆列表
  • 1 # 與時俱進zy

    python有三種方法解析XML,分別是SAX,DOM,以及ElementTree:

    SAX用事件驅動模型,透過在解析XML的過程中觸發一個個的事件並呼叫使用者定義的回撥函式來處理XML檔案。

    DOM模型將XML資料在記憶體中解析成一個樹,透過對樹的操作來操作XML。

    ElementTree就像一個輕量級的DOM,具有方便友好的API。程式碼可用性好,速度快,消耗記憶體少。

    Python 解析XML例項:

    #!/usr/bin/python# -*- coding: UTF-8 -*-import xml.saxclass 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")

  • 中秋節和大豐收的關聯?
  • 鼓勵同學們多讀書的幽默語句?