プルパーサ
たかはしさんから.NETのクラスライブラリにあるXMLReaderがプルパーサであることを教えていただいたので,.NETはともかくJavaのプルパーサについて調べてみることにします.といってもなかなか理解がおぼつかないけれど.プルパーサというのはSAXのように要素を発見するたびにクライアント側のイベントハンドラを呼び出すという方式ではなく,クライアント側の呼び出しによって要素を返すというかたちを取る(らしいです).
去年の4月にCommon API for XML Pull Parsingという風tに標準化されたみたいですね.要素だけをパースしたいならnext()を次々に呼んでいって戻り値を見ればいいらしい.細かくみたいならnextToken()を呼ぶと,コメントなども読めるとのこと.
単純にイテレータみたいな動きをすると思えばいいのかな.
で,.NETのほうのXmlTextReaderのメソッドを見るとRead()がnext()にあたるようです.これってつまりXMLPullの仕様には準拠していないってコトでしょうか.
ちなみに現在Javaで使えるパーサの実装は
- XNI 2 XmlPull
- XPP3/MXP1
- kXML2
の3つ.上記で紹介したページで3つとも紹介されてますね.このサイトを見ているとJiBX XMLというXMLPullを使ってデータバインディングを行うツールも開発されているみたいです.
きわめて簡単で,かつおもしろそうなので試しに使ってみたいんだけど,そんなことしている場合なのかしら…….