- - PR -
SAXParserの挙動について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-05-16 15:40
添付したコードでXMLファイルを処理すると、まれに1つのテキストデータに対して2回charactersメソッドが呼び出されることがあります
例:参考1にあるデータの場合 <root> <data>あいうえお</data> </root> このようなデータのときに あいう <= charactersメソッド1回目 えお <= charactersメソッド1回目 と出力される (実際にはもっと大きなファイルでないと発生しません) おそらくパーサ内のバッファの切り替えによって発生するのだと思われますが、このようにテキストデータが分割される可能性があるという説明を見出すことができませんでした 参考1:http://www.atmarkit.co.jp/fxml/rensai/xmljava04/xmljava02.html 分割について記述なし 参考2:http://sdc.sun.co.jp/java/techarticles/jax/Rev3/jax_jaxp_03.html こちらも分割について記述なし ここで紹介されているSAXAPIのサンプルでは"Mocha Java"というテキストデータが分割される可能性があるので、場合によっては意図したとおりに動かないような気がします 現在、分割されて取得が行われることを前提に作業を進めているのですが、確認の意味でこの挙動について説明した情報を探しています 何か情報がありましたら教えていただけないでしょうかよろしくお願いします
| ||||
|
投稿日時: 2005-05-16 17:05
単純に、「分割についての記述」という意味でなら、javadocに記述があります。
「なぜ分割されるのか?」という意味であれば、実装依存になるのではないでしょうか? | ||||
|
投稿日時: 2005-05-16 17:57
レスありがとうございます
DefaultHandler、SAXParserに目が行ってしまい、そのインターフェイスの確認を失念していました ContentHandlerインターフェイスのcharactersメソッドの説明に SAX パーサは、連続する文字データを単一のチャンクとして、またはいくつかのチャンクに分割して返します との記述を確認しました チャンクという言葉の正確な意味をつかみかねていますが、パース時の挙動については確認できました ありがとうございました |
1