Xerces-sax-parser
提供:Dev Guides
SAXパーサー-概要
SAX(Simple API for XML)は、XMLドキュメント用のイベントベースのパーサーです。 DOMパーサーとは異なり、SAXパーサーは解析ツリーを作成しません。 SAXはXMLのストリーミングインターフェイスです。つまり、SAXを使用するアプリケーションは、処理中のXMLドキュメント(要素と属性)に関するイベント通知を、ドキュメントの最上部から始まり、 ROOT要素。
- 整形式のXMLドキュメントを構成するトークンを認識して、XMLドキュメントを上から下に読み取ります。
- トークンは、ドキュメントに表示されるのと同じ順序で処理されます。
- アプリケーションプログラム、つまりパーサーが発生したときに遭遇したトークンの性質を報告します。
- アプリケーションプログラムは、パーサーに登録する必要がある「イベント」ハンドラーを提供します。
- トークンが識別されると、関連情報を使用してハンドラー内のコールバックメソッドが呼び出されます。
いつ使うの?
あなたはSAXパーサーを使用する必要があります-
- XMLドキュメントを上から下に直線的に処理できます。
- ドキュメントは深くネストされていません。
- DOMツリーが大量のメモリを消費する非常に大きなXMLドキュメントを処理しています。 典型的なDOM実装では、10バイトのメモリを使用して1バイトのXMLを表します。
- 解決すべき問題は、XMLドキュメントの一部のみです。
- パーサーがデータを見るとすぐにデータが利用できるため、SAXはストリームを介して到着するXMLドキュメントに適しています。
SAXの欠点
- XMLドキュメントは前方のみで処理されるため、ランダムアクセスはありません。
- パーサーが見たデータを追跡する必要がある場合、またはアイテムの順序を変更する必要がある場合は、コードを記述し、独自にデータを保存する必要があります。
ContentHandlerインターフェース
このインターフェイスは、SAXパーサーがアプリケーションプログラムにXMLドキュメントのコンポーネントを通知するために使用するコールバックメソッドを指定します。
- * void startDocument()*-ドキュメントの先頭で呼び出されます。
- * void endDocument()*-ドキュメントの先頭で呼び出されます。
- * void startElement(String uri、String localName、String qName、Attributes atts)*-要素の先頭で呼び出されます。
- * void endElement(String uri、String localName、String qName)*-要素の終わりに呼び出されます。
- * void characters(char [] ch、int start、int length)*-文字データが検出されたときに呼び出されます。
- * void ignorableWhitespace(char [] ch、int start、int length)*-DTDが存在し、無視可能な空白が見つかったときに呼び出されます。
- * void processingInstruction(String target、String data)*-処理命令が認識されると呼び出されます。
- * void setDocumentLocator(Locator locator))*-文書内の位置を識別するために使用できるロケーターを提供します。
- * void skippedEntity(String name)*-未解決のエンティティが見つかったときに呼び出されます。
- * void startPrefixMapping(String prefix、String uri)*-新しい名前空間マッピングが定義されると呼び出されます。
- * void endPrefixMapping(String prefix)*-名前空間定義がスコープを終了するときに呼び出されます。
属性インターフェイス
このインターフェイスは、要素に接続された属性を処理するためのメソッドを指定します。
- * int getLength()*-属性の数を返します。
- * String getQName(int index)*
- * String getValue(int index)*
- * String getValue(String qname)*