2

Javaで大きなXMLファイル(500+MB)を「Windows-1252」エンコーディングから「UTF-8」エンコーディングに変換する方法はありますか?

4

3 に答える 3

2

これは 1 回限りのジョブですか、それとも繰り返し実行して効率化する必要があるジョブですか?

1 回限りの場合、Java コーディングの必要はないと思います。たとえば、クエリ「.」を実行するだけです

java net.sf.saxon.Query -s:input.xml -qs:. -o:output.xml

3Gbのメモリを割り当てていることを確認してください。

それを繰り返し行っていて、ストリーミング アプローチが必要な場合は、テキストとして処理するか (Jon Skeet が提案するように)、XML として処理するかを選択する必要があります。XML として行う利点は、主に XML 宣言が処理され、文字参照が文字に変換されることです。最も簡単な方法は、JAXP ID 変換を使用することです。

Source in = new StreamSource(new File("input.xml"));
TransformerFactory f = TransformerFactory.newInstance();
Result out = new StreamResult(new File("output.xml"));
f.newTransformer().transform(in, out);
于 2013-10-03T19:09:24.033 に答える
0

これが 1 回限りの場合、Java は最適なツールではない可能性があります。考慮してくださいiconv

iconv -f windows-1252 -t utf-8 <source.xml >target.xml

これにより、コードを記述する必要なく、ストリーミングのすべての利点が得られます。

Michael のソリューションとは異なり、これは XML 宣言を処理しません。必要に応じて手動で編集するか、UTF-8 を使用している場合は省略します。

于 2013-10-05T09:17:03.460 に答える