1

大量の大きな XML ファイル (すべてのファイルの合計サイズが 1 GB を超える) があり、それらをベンダー スキーマから当社のスキーマに変換する必要があります。

ベンダーは、サーバー上の FTP の場所に 1 つの ZIP ファイル (大きな XML ファイルを含む) を持っています。その ZIP ファイルを取り出して、利用可能なすべての XML ファイルを変換する必要があります。スキーマ形式に変換した後、データをデータベースに永続化する必要があります。

これを実装するための良い設計は何ですか? Java をサポートする関連ツールとユーティリティは何ですか?

4

3 に答える 3

4

通常のJava APIを使用するだけです...

File zipFile = new File("archive.zip");
File xsltFile = new File("transform.xslt");
File transformedXmlsFile = new File("transformed.xml");

StreamSource xsltSource = new StreamSource(xsltFile);
Transformer transformer = TransformerFactory.newInstance().newTransformer(xsltSource);

ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFile));
ZipEntry zipEntry;
OutputStream resultXmls = new FileOutputStream(transformedXmlsFile);
while ((zipEntry = zipIn.getNextEntry()) != null){
  StreamSource inputXml = new StreamSource(zipIn);
  StreamResult resultXml = new StreamResult(resultXmls);
  transformer.transform(inputXml, resultXml);
}
zipIn.close();
resultXmls.close();
于 2012-09-18T18:42:44.387 に答える
0

シンプルな方法が好きです。SAX、Stax 実装を使用し、DOM は使用しません。しかし、それは私だけです。おそらく、あなたの代わりにすべての作業を行う素晴らしいライブラリがここにあるでしょう:)

DOM の 1GB xml は、すべての RAM を消費する可能性があります。- どのライブラリを選択しているか、裏で何を使用しているかに注意してください。

それが役立つことを願っています!

于 2012-09-18T18:27:32.363 に答える
0

変換には Saxon-EE を使用し、XML アンマーシャリングには Woodstox を使用しました。

于 2012-10-10T01:49:00.407 に答える