Xerces-stax-parser
提供:Dev Guides
StAXパーサー-概要
StAXは、SAXパーサーと同様の方法でXMLドキュメントを解析するJavaベースのAPIです。 しかし、2つのAPIの間には2つの大きな違いがあります-
- StAXはPULL APIですが、SAXはPUSH APIです。 つまり、StAXパーサーの場合、クライアントアプリケーションは、必要に応じてStAXパーサーにXMLから情報を取得するように要求する必要がありますが、SAXパーサーの場合、SAXパーサーがクライアントアプリケーションに情報を通知すると、クライアントアプリケーションは情報を取得する必要があります利用可能です。
- StAX APIは、XMLドキュメントの読み取りと書き込みができます。 SAX APIを使用すると、xmlは読み取り専用になります。
以下は、StAX APIの機能です-
- 整形式のXMLドキュメントを構成するトークンを認識して、XMLドキュメントを上から下に読み取ります。
- トークンは、ドキュメントに表示されるのと同じ順序で処理されます。
- パーサーが発生したときに遭遇したトークンの性質についてアプリケーションプログラムを報告します。
- アプリケーションプログラムは、イテレータとして機能し、イベントを反復処理して必要な情報を取得する「イベント」リーダーを提供します。 使用可能な別のリーダーは、xmlノードへのポインターとして機能する「カーソル」リーダーです。
- イベントが識別されると、xmlオブジェクトをイベントオブジェクトから取得し、さらに処理できます。
いつ使うの?
あなたはStAXパーサーを使用する必要があります-
- XMLドキュメントを上から下に直線的に処理できます。
- ドキュメントは深くネストされていません。
- DOMツリーが大量のメモリを消費する非常に大きなXMLドキュメントを処理しています。 典型的なDOM実装では、10バイトのメモリを使用して1バイトのXMLを表します。
- 解決すべき問題は、XMLドキュメントの一部のみです。
- パーサーがデータを確認するとすぐにデータが利用できるため、StAXはストリームを介して到着するXMLドキュメントに対して適切に機能します。
SAXの欠点
- XMLドキュメントは順方向のみで処理されるため、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)*-属性を要素に書き込みます。