0

Web からダウンロードした製品データ フィードを処理しようとしています。ダウンロードは次のように行われます。

URL website = new URL("http://some.products.com/format/xml/compression/gzip/");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("/opt/some/file.xml.gz");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();

ファイルシステムに保存され、'ファイルタイプが ansii のように見える場合。

次のようにストリーミング プロセッサでファイルを読み取ると、次のようになります。

GZIPInputStream gzis = new GZIPInputStream(new FileInputStream("/opt/some/file.xml.gz"));
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLEventReader eventReader = inputFactory.createXMLEventReader(gzis);
while (eventReader.hasNext()) {
    XMLEvent event = eventReader.nextEvent();
    ...
}

途中のどこかで、テキストの一部がデコードされます。これは、最終的にこのようになるためです'

つまり、エスケープされたアンパサンドはエスケープされませんが、エスケープの第 2 レベルは処理されていないように見えます。そして、私はそれをどのように、またはどこで処理することになっているのか、うまくいきません。ファイルを読んでいるときにデコードしようとする必要がありますか? または、xmlが解析された後に行う必要がありますか?

編集: これらの文字は、URL ではなくテキスト フィールドに表示されることに注意してください。

4

0 に答える 0