DOM和SAX 比較

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

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

3.SAX執行速度較快.

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

DOM VS SAX

剖析速度  SAX 勝出
使用記憶體空間 SAX使用較小 勝出
CPU使用時間   SAX較少   勝出

能否修改XML文件資料 DOM 可以
能否刪除XML文件資料 DOM 可以
能否轉換XML文件成為其他格式,如HTML一 DOM 可以
建議使用場合:
DOM 須對XML文件進行修改的情況
SAX 僅需從XML文件擷取資料的場合

詳細資料比較來源:http://andypony.mis.stut.edu.tw/teach/xml_html/xmlteach2_4.htm

回應

看了之後才知道sax和dom的差別以及在何時用比較適當

每個東西都各有利弊

之前只知道sax是用事件觸發 並不知道他不會把東西存到記憶體裡面

而dom會存到記憶體 所以dom在第一次讀取的時候會比sax慢

所以如果要多次讀取就用sax

要對xml文件做修改就用dom比較適當