倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

SAX イベント・ハンドラあれこれ

前回説明した SAXParser#parse() メソッドによって XML 文書を解析すると、文書中の要素やテキストに応じて SAX イベント*1が発生します。 予め処理を実装した「ハンドラ」オブジェクトを SAXParser に設定することで、SAX イベントの種類に応じた処理を実行することができます(記事一覧)。

処理を実装するクラスが実装すべき「ハンドラ」インターフェースは7つありますが、実際に使うのは2〜3個でしょう。 また、それらの実装を助けるサポート・クラスもあります。

パッケージ ハンドラ・インターフェース サポート・クラス
org.xml.sax パッケージ ContentHandler, ErrorHandler, EntityResolver, DTDHandler org.xml.sax.helpers.DefaultHandler
org.xml.sax.ext パッケージ LexicalHandler, EntityResolver2, DeclHandler org.xml.sax.ext.DefaultHandler2

これらを図にまとめると、下図のようになります:

f:id:waman:20080529035536p:image

DefaultHandler2 クラスは、全てのハンドラを実装しています。

*1:実際にはこういったクラスやオブジェクトはありませんが。