0

コードは記事の最後にあります。XMLファイルのルートデータタグの前にデータがある場合、このエラーが発生するようです。入ってくるバイト ストリームを確認しましたが、60 または '<' で始まります。そのため、ファイルの先頭に奇妙な Byte-Order-Mark などはありません。

この問題の原因として、他に何が考えられますか?

ありがとうございます!

 XMLReader r = XMLReaderFactory.createXMLReader();
 SAXSource source = new SAXSource(new NamespaceFilter(r), new InputSource(is));

 validator.validate(source, null);
4

2 に答える 2

0

ルート要素の外側で許可されるのは、XML 宣言、コメント、および処理命令だけです。したがって、ドキュメントが正しく開始される可能性がありますが、ルート要素の前に他のがらくた (空白以外) があります。パーサーが対処方法を知らなかった場合、BOM も実際にこの問題を引き起こす可能性がありますが、おそらくここでは当てはまりません。

Woodstox などの Stax パーサーを試すことも検討できます。これは、おそらく同じ問題 (それが何であれ) に遭遇する可能性がありますが、実際の問題についてもう少し詳しい情報を提供できるはずです。得られるメッセージはまばらすぎます。パーサーは怠惰; 少なくとも場所 (ファイルの先頭からの相対位置) を示す必要があります。

于 2011-04-16T20:09:03.103 に答える
0

圧縮を使用しているときにこの問題が発生しました。圧縮されていないストリームは、余分な文字を取得することがあります。

于 2011-04-16T20:27:22.190 に答える