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) - 將屬性寫入元素。

廣告
© . All rights reserved.