1. ホーム
  2. ジャワ

xml を再解析した結果、エラーが発生しました。コンテンツは、末尾のセクションで許可されていません。

2022-02-27 23:42:45





org.xml.sax.SAXParseException: 後続のセクションでコンテンツが許可されていません。コンテンツは、末尾のセクションで許可されていません。







要約すると、この問題が発生する理由は大きく2つあります。

1. 複数のスペースや改行など、XMLの内容が正しくない。慎重なトラブルシューティングが必要。

2. Streamを使用したストリームファイルの読み方が正しくない、詳細は以下の通りです。

ファイルの読み書きを行う場合、一般的にはinputStreamから固定サイズのバイト配列を毎回読み込むことになりますが、これは

byte[] array = new byte[1024]です。

BufferedInputStream buffInput = new BufferedInputStream(inputStream);

FileOutputStream fileOS = new FileOutputStream(targetFile);

BufferedOutputStream buffOS = new BufferedOutputStream(fileOS);

int word = 0;

while ((word = buffInput.read(array)) ! = -1){ <未定義

buffOS.write(array)を実行します。

}

上記の書き方では、最後に読み込んだバイトが配列の1024未満の場合、前回読み込んだバイトもbyte[]に表示されてしまい、XMLのパースに失敗してしまうことになります。そのため、以下のような方法を用いることができます。

BufferedInputStream buffInput = new BufferedInputStream(inputStream);

FileOutputStream fileOS = new FileOutputStream(targetFile);

BufferedOutputStream buffOS = new BufferedOutputStream(fileOS);

int word = 0;

while ((word = buffInput.read()) ! = -1){ <未定義

buffOS.write(word)を実行します。

}