# XML 檔案解析比較 DOM、SAX、StAX ## 定義 DOM、SAX、StAX #### DOM : Document Object Model - 檔案物件模型 將整個 xml 加載在記憶體中,形成檔案物件,所有對 xml 操作都在記憶體的檔案物件中進行。 * DOM 是官方 xml 解析標準,所有開發語言都支援 - Java、JavaScript 都支援DOM。 * tree based * 簡單易用 * 可以隨時修改/輸出 xml 內的資料 * 創建 (create DOM Tree) 的過程速度較慢 #### SAX:Simple API for XML - XML 簡易 API 當 xml 檔案非常大時,無法將所有的數據內容儲存於記憶體中。 SAX 方式是一邊解析、一邊處理、一邊釋放記憶體資源,不會保留大量的 xml 數據。 * event based * 非讀取完才解析,處理速度快 * 消耗較少的記憶體資源 * 效率叫好,取得資料後可以即時停止 #### StAX The Stream API for XML - XML 資料流 API STAX 是 pull 模式 XML 解析方式,由 客戶端 向 伺服器 輪詢請求數據。 SAX 是 push 模式 XML 解析方式,由 伺服器 向 客戶端 主動推送數據。 [Reference](https://blog.csdn.net/zhongkelee/article/details/51737710) [Reference](https://codefluence.wordpress.com/2018/05/19/difference-between-dom-and-sax/) ###### tags: `Java`