StAXパーサー-概要
StAXは、SAXパーサーと同様の方法でXMLドキュメントを解析するJAVAベースのAPIです。しかし、2つのAPIには2つの大きな違いがあります-
StAXはPULLAPIですが、SAXはPUSHAPIです。つまり、StAXパーサーの場合、クライアントアプリケーションは必要なときにいつでもXMLから情報を取得するようにStAXパーサーに要求する必要がありますが、SAXパーサーの場合、SAXパーサーがクライアントアプリケーションに情報を通知するときにクライアントアプリケーションは情報を取得する必要があります利用可能です。
StAX APIは、XMLドキュメントの読み取りと書き込みを行うことができます。SAX APIを使用すると、xmlは読み取りのみが可能です。
StAXAPIの機能は次のとおりです-
XMLドキュメントを上から下に読み取り、整形式のXMLドキュメントを構成するトークンを認識します。
トークンは、ドキュメントに表示されているのと同じ順序で処理されます。
パーサーが発生したトークンの性質について、アプリケーションプログラムに報告します。
アプリケーションプログラムは、イテレータとして機能し、イベントを反復処理して必要な情報を取得する「イベント」リーダーを提供します。利用可能な別のリーダーは、xmlノードへのポインターとして機能する「カーソル」リーダーです。
イベントが識別されると、xml要素をイベントオブジェクトから取得して、さらに処理することができます。
いつ使用しますか?
−の場合はStAXパーサーを使用する必要があります
XMLドキュメントは上から下に直線的に処理できます。
ドキュメントは深くネストされていません。
DOMツリーが大量のメモリを消費する非常に大きなXMLドキュメントを処理しています。一般的なDOM実装では、10バイトのメモリを使用して1バイトの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) −属性を要素に書き込みます。