ZIP アーカイブから XML ファイルを読み取ろうとしています。関連するコードは次のとおりです。
ZipInputStream zis = new ZipInputStream(is);
ZipEntry entry = zis.getNextEntry();
while(entry != null) {
if(entry.getName().equals("plugin.xml")) {
int size = (int)entry.getSize();
byte[] bytes = new byte[size];
int read = zis.read(bytes, 0, size);
System.out.println("File size: " + size);
System.out.println("Bytes read: " + read);
}
}
これは、作業時に次のような出力を生成します。
File size: 5224
Bytes read: 5224
読み取られるplugin.xml
ファイルは特別なものではなく、私が見つけたすべての XML 検証に合格しますが、XML ファイルへの小さな変更 (文字の削除、文字の追加など)により、入力ストリームから「読み取られたバイト数」がファイルサイズより小さい。この場合、上記と同じファイルの XML 属性のテキスト値を変更したところ、次の結果が得られました。
File size: 5218
Bytes read: 5205 // the reader stopped early!
どの XML ファイルが機能し、どの XML ファイルが機能しないかについて、パターンがわかりません。完全にランダムのようです。
誰かが前にこのようなものに出くわしたことがありますか?
編集:言い忘れましたが、plugin.xml
ファイルを読み取るJavaコードは、私が変更できない既製のアプリケーションに埋め込まれています。私の問題は、場合によっては XML ファイルが受け入れられない理由を理解しようとしています。