- Apache Xerces 教程
- Xerces 主頁
- XML 概述
- Xerces 環境設定
- XML 解析器
- Xerces DOM 解析器
- Xerces DOM 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Xerces SAX 解析器
- Xerces SAX 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Xerces StAX 解析器
- Xerces StAX 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Xerces 有用資源
- Xerces - 快速指南
- Xerces - 有用資源
- Xerces - 討論
StAX 解析器 - 概述
StAX 是一個基於 JAVA 的 API,用於像 SAX 解析器一樣解析 XML 文件。但是,這兩個 API 之間有兩個主要區別:
StAX 是一個拉取式 API,而 SAX 是一個推送式 API。這意味著在 StAX 解析器的情況下,客戶端應用程式需要請求 StAX 解析器在需要時從 XML 獲取資訊,但在 SAX 解析器的情況下,客戶端應用程式需要在 SAX 解析器通知客戶端應用程式有資訊可用時獲取資訊。
StAX API 可以讀取和寫入 XML 文件。使用 SAX API,只能讀取 xml。
以下是 StAX API 的特性:
從上到下讀取 XML 文件,識別構成格式良好的 XML 文件的標記。
標記按其在文件中出現的順序進行處理。
嚮應用程式報告解析器遇到的標記的性質。
應用程式提供一個“事件”讀取器,它充當迭代器並迭代事件以獲取所需資訊。另一個可用的讀取器是充當 XML 節點指標的“遊標”讀取器。
識別事件後,可以從事件物件中檢索 xml 元素並進一步處理。
何時使用?
你應該在以下情況下使用 StAX 解析器:
你可以從上到下線性處理 XML 文件。
文件巢狀不深。
你正在處理一個非常大的 XML 文件,其 DOM 樹將消耗過多的記憶體。典型的 DOM 實現使用十個位元組的記憶體來表示一個位元組的 XML。
要解決的問題只涉及 XML 文件的一部分。
資料在解析器看到後即可獲得,因此 StAX 非常適合透過流到達的 XML 文件。
SAX 的缺點
由於 XML 文件以單向方式處理,因此我們無法隨機訪問它。
如果你需要跟蹤解析器已看到的資料或更改專案的順序,則必須自行編寫程式碼並存儲資料。
XMLEventReader 類
此類提供事件迭代器,可用於在解析 XML 文件時迭代發生的事件
StartElement asStartElement() - 用於檢索元素的值和屬性。
EndElement asEndElement() - 在元素結束時呼叫。
Characters asCharacters() - 可用於獲取字元,例如 CDATA、空格等。
XMLEventWriter 類
此介面指定建立事件的方法。
add(Event event) - 新增包含元素的事件到 XML。
XMLStreamReader 類
此類提供事件迭代器,可用於在解析 XML 文件時迭代發生的事件
int next() - 用於檢索下一個事件。
boolean hasNext() - 用於檢查是否存在更多事件
String getText() - 用於獲取元素的文字
String getLocalName() - 用於獲取元素的名稱
XMLStreamWriter 類
此介面指定建立事件的方法。
writeStartElement(String localName) - 新增給定名稱的起始元素。
writeEndElement(String localName) - 新增給定名稱的結束元素。
writeAttribute(String localName, String value) - 將屬性寫入元素。