XML已經成爲一種很是通用的數據交換格式,它的平臺無關性,語言無關性,系統無關性,給數據集成與交互帶來了極大的方便。java
諸多web應用框架,其可配置的編程方式,給咱們的開發帶來了很是大程度的便捷,但細細想來,它們的應用無一不是java bean與xml之間的轉換解析。本文將對xml的兩種操做標準DOM和SAX,從它們各自的特色、適用範圍等方面進行簡介。web
DOM (Document Object Model) :DOM標準中,採用W3C標準表示XML,有多重語言支持。所以其跨平臺性很是好。編程
採用DOM規範處理xml時,會把xml文件整體載入進內存中,並在內存中創建對象樹。對象樹表示爲Document對象,xml文件的根節點相應對象樹的根節點。依次往下排列。因爲整個xml文件被載入至內存中,因此基於DOM的處理對server內存要求比較高。但是正因爲整個文件被載入,因此對文件自己的操做速度會比較快。注意這裏所說的是文件自己,即文件被載入後的處理,比方對文件內部元素的遍歷。但當文件自己很是大時。因爲載入速度及對內存的佔用影響,所以從整體而言。其效率不必定好。框架
適用範圍:小型 XML 文件解析、需要全解析或者大部分解析 XML、需要改動 XML 樹內容以生成本身的對象模型ui
使用DOM解析xml文件的步驟:spa
1.獲取DocumentBuilderFactory對象。server
2.使用DocumentBuilderFactory對象生成DocumentBuilder對象。xml
3.使用DocumentBuilder對象解析xml文件獲得Document對象。對象
4.從Document對象得到xml文件根節點。事件
5.經過Node節點出發得到文檔信息。
SAX (Simple API for XML) :SAX規範把xml文件做爲數據流來處理的,讀取一部分數據。處理一部分數據,它不需要將整個文件載入進內存。所以它很是好的攻克了DOM解析中資源佔用的問題。SAX規範是基於事件驅動的。將XML數據文件裏的不一樣內容概括爲不一樣的對象,解析不一樣對象時會產生不一樣事件,進而調用不一樣事件處理器。比方在開始解析文件時會產生文件解析事件,調用startDocument事件處理器;當讀取節點的時候會產生開始元素事件,調用startElement事件處理器。相同。當讀取節點內容、節點解析結束、文件解析結束時,會產生相應事件,調用相應的文件處理器進行處理。
適用範圍:大型 XML 文件解析、僅僅需要部分解析或者僅僅想取得部分 XML 樹內容、有 XPath 查詢需求、有本身生成特定 XML 樹對象模型的需求
使用SAX方式解析xml文檔的步驟:
1.獲取SAXParserFactory對象;
2.使用SAXParserFactory對象生成SAXParser。
3.調用SAXParser對象的parser方法對xml解析,而後獲取解析結果。