# 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`