Java StAX解析器
StAX是一個基於JAVA API用於解析XML文檔,類似SAX解析器的方式。但兩種API之間有兩個區彆
-
StAX是PULL API,其中作為SAX是PUSH API。這意味著如果StAX解析器,客戶端應用程序需要詢問StAX解析器從XML獲取信息它所需要的,但如果是SAX解析器,客戶端應用程序需要獲取信息時,SAX解析器會通知客戶端應用程序的信息是可用的。
-
StAX的API可以讀取和寫入XML文檔。使用SAX API,XML可以是隻讀的。
環境設置
為了使用StAX的解析器,應該準備好stax.jar在應用程序的類路徑中。下載 stax-1.2.0.jar.
以下是StAX API的功能
-
讀取XML文件從上到下,認識構成一個結構完整的XML文檔的標記
-
令牌是以相同的順序進行處理,它們出現在文檔中
-
報告應用程序,因為解析器遇到標記的特性
-
應用程序提供了一個“事件”讀取器充當了事件,以獲得所需信息的迭代器和迭代。可另一個讀取器是“光標”充當一個指向XML節點。
-
由於事件被識彆,XML元素可以從事件對象進行檢索,並且可以進一步處理。
什麼情況下使用?
應該使用的StAX解析器的時候:
-
可以處理在自上而下線性方式的XML文檔。
-
文件並不深入嵌套。
-
處理一個非常大的XML文檔的DOM樹會占用太多的內存。典型的DOM的實現使用10字節的存儲器以表示XML的一個字節。
-
要解決的問題涉及XML文檔的一部分。
-
數據是可用的,隻要它是由解析器處理,這樣StAX可以很好地用於所收到超過數據流的XML文檔。
SAX的缺點
-
因為它是在一個處理的方式,而不是隨機訪問XML文檔。
-
如果需要跟蹤的數據分析器已經看到或更改項目的順序,必須編寫代碼和數據存儲以自己方式處理。
XMLEventReader類
因為在解析XML文檔時該類提供可用於迭代事件事件迭代器
-
StartElement asStartElement() - 用於檢索值和元素的屬性。
-
EndElement asEndElement() - 調用元件的端部。
-
Characters asCharacters() - 可用於獲得字符,例如一個CDATA,空白等。
XMLEventWriter類
此接口指定創建事件的方法。
-
add(Event event) - 添加包含元素XML事件。
XMLStreamReader Class
因為在解析XML文檔時該類提供可用於迭代事件事件迭代器
-
int next() - 用於檢索下一個事件。
-
boolean hasNext() - 用於檢查其他事件的存在與否
-
String getText() - 用於獲取一個元素的文本
-
String getLocalName() - 用於獲取一個元素的名稱
XMLStreamWriter類
此接口指定創建事件的方法
-
writeStartElement(String localName) - 加入定名稱開始元素。
-
writeEndElement(String localName) - 添加指定名稱的結束元素。
-
writeAttribute(String localName, String value) - 編寫屬性到元素。