1

多くのXMLファイルを解析するプロセスからタイトルにエラーが発生することがあります。

ファイル自体は問題ないようで、エラーを生成したのと同じファイルでプロセスを再実行すると問題なく動作します。

例外は、への呼び出しで発生しますXMLReader.parse(InputStream is)

これはパーサーのバグである可能性がありますか(私はpiccoloを使用しています)?それとも、ファイルストリームを開く方法についてですか?

マルチスレッドは含まれません。

当時、ピッコロは良いアイデアのように見えましたが、私にはそれを使用するための良い言い訳がありません。デフォルトのSAXパーサーに切り替えて、それが役立つかどうかを確認します。

更新:役に立たなかったし、一部のワークロードではPiccoloの方がかなり高速であることがわかったので、戻った。

4

3 に答える 3

3

私はおそらくこの話の終わりを告げるべきです:それは愚かな間違いでした。2つのプロセスがありました。1つはXMLファイルを生成し、もう1つはそれらを読み取ります。リーダーはディレクトリをスキャンし、検出したすべての新しいファイルを処理しようとします。

時々、リーダーはプロデューサーが書き込みを完了する前にファイルを検出するため、「予期しないファイルの終わり」の例外を合法的に発生させました。ここでは小さなファイルについて話しているので、このイベントは非常にまれでした。私がチェックするようになったとき、プロデューサーはすでにファイルの書き込みを終えていたので、私にはパーサーが何も文句を言っていないように見えました。

「マルチスレッドは関与していません」と書きました。明らかに、これは非常に誤解を招くものでした。

1つの解決策は、ファイルを別の場所に書き込み、完了後にのみ監視対象フォルダーに移動することです。より良い解決策は、適切なメッセージキューを使用することです。

于 2012-08-30T05:43:25.603 に答える
2

XMLBeansでPicoloに似たようなことが起こっています。簡単なグーグルの後、私は次の投稿に出くわしました:

XMLBEANS-226-例外「null後の予期しないファイルの終わり」

投稿には、Apache Commons(v1.4以降)クラスorg.apache.commons.io.input.AutoCloseInputStreamを使用すると、この例外が解決される可能性があると記載されています(自分で試していない、お詫びします)。

于 2012-06-18T21:49:06.960 に答える
0

これはマルチスレッドシナリオですか?つまり、同時に複数の解析を行いますか。

JREでデフォルトのXMLパーサーを使用しない特別な理由はありますか?

于 2009-07-02T06:02:01.837 に答える