1

我有一堆大型 XML 文件(所有文件的总大小超过 1 GB),我需要将它们从供应商模式转换为我们的模式。

供应商在其服务器上的某个 FTP 位置有一个 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 可以吃掉你所有的内存!- 小心你选择什么图书馆以及他在幕后使用什么。

我希望它有帮助!

于 2012-09-18T18:27:32.363 回答
0

我使用 Saxon-EE 进行转换,使用 Woodstox 进行 XML 解组。

于 2012-10-10T01:49:00.407 回答