SAX重點摘要

一些SAX重點

擷取自:

http://dslab.ee.ncku.edu.tw/~andypony/teach/xml_html/xmlteach2_4.htm 

SAX(Simple API for XML)

  • 一組程式設計介面, 將XML文件視為一個文字流的資料, 在讀取XML元素時觸發一系列的事件, 只需撰寫事件處理程序, 就可以取得XML元素的內容.

  • SAX載入XML檔案時有如開啟一循序檔案(Sequential File), 將XML元素和內容視為文字檔的字元讀入, 在讀到XML元素的開始標籤, 結束標籤和內容時將產生一系列的事件, 如 :

    startDocument, startElement, characters, endElement, endDocument

Java, Visual Basic, Visual C++等語言都可使用SAX技術開發XML應用程式.

DOM與SAX的差異

  • SAX是一種唯讀, 只能向前的Forward-Only資料處理方式, 而DOM則是剖析整個文件, 完整瀏覽和更新樹狀資料結構.

  • SAX在記憶體的使用比較有效率.

  • SAX執行速度較快.

  • DOM會先將整個文件 讀入,並且轉換成tree的型態,如果說在xml文件中的節點會被重複 讀取的話,這個方法當然有好處,因為所有的資料已經被存在記憶體 裡面了。但是,在第一次讀取的時候速度就會比較慢,因為需要花時間 來轉換成tree的格式。SAX則剛好相反,處理原則是使用event model, 每抓到一個有定義的標籤,就引發對應的event來進行處理,這樣做當然 是比較適合那些只被讀取一次的文件,而SAX並未儲存資料於記憶體中, 所以第二次讀取的時候仍然要從頭處理一次。比較起來,SAX在第一次 讀取的速度比較快,而DOM在之後的讀取比較快。

DOM與SAX如何Parse以下XML File?

<hello>

<message>大家好!</message>

<message>say Hello!</messae>

</hello>