将大型XML文档从一种格式转换为另一种格式的最快速最佳方法

时间:2012-09-18 18:19:24

标签: java design-patterns architecture implementation

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

供应商在其服务器上的某个FTP位置有一个ZIP文件(它包含大型XML文件)。我必须选择该ZIP文件,然后转换所有可用的XML文件。转换为模式格式后,我需要将数据保存在数据库中。

实现这个的好设计是什么?什么是支持Java的相关工具和实用程序?

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

我喜欢简单的方法。我会使用任何SAX,Stax实现,并且不使用任何DOM。但它只是我,也许你会在这里找到一个花哨的图书馆,它将完成所有工作,而不是你:)

DOM中的1GB xml可以吃掉你的所有内存! - 仔细选择你选择的图书馆以及他在幕后使用的内容。

我希望它有所帮助!

答案 2 :(得分:0)

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