変換を適用したい多数のXMLファイルを含むZipInputStreamがあります。次のコードは、XSLTファイルとZIPファイルをロードし、ZIPエントリをループして、それぞれに変換を適用しようとします。ただし、変換を実行した後、変換関数が入力ストリームを閉じているように見えます。ストリームが閉じているため、getNextEntry()関数が失敗します。
この問題を回避する簡単な方法はありますか(入力ストリームを開いたままにして、ZipInputStreamを次のエントリに移動できるようにする)、またはここでもっと基本的なものが欠けていますか?
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource(xsltFileName));
FileInputStream fis = new FileInputStream(fileName);
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry ze = null;
while ((ze = zis.getNextEntry()) != null)
{
String newFileName = ze.getName();
transformer.transform(new StreamSource(zis), new StreamResult(new FileOutputStream(newFileName)));
}
私は解決策を探そうとしましたが、意味のあることは何も思いつかないようです。アイデアやフィードバックをいただければ幸いです。