我有一堆大型XML文件(所有文件的总大小都超过1 GB),我需要将它们从供应商模式转换为我们的模式。将大型XML文档从一种格式转换为另一种格式的最快且最好的方法
供应商在其服务器上的某个FTP位置有一个ZIP文件(它包含大型XML文件)。我必须选择该ZIP文件,然后转换所有可用的XML文件。在转换为我们的模式格式之后,我需要将数据保存在数据库中。
什么是一个好的设计来实现这个?什么是支持Java的相关工具和实用程序?
我有一堆大型XML文件(所有文件的总大小都超过1 GB),我需要将它们从供应商模式转换为我们的模式。将大型XML文档从一种格式转换为另一种格式的最快且最好的方法
供应商在其服务器上的某个FTP位置有一个ZIP文件(它包含大型XML文件)。我必须选择该ZIP文件,然后转换所有可用的XML文件。在转换为我们的模式格式之后,我需要将数据保存在数据库中。
什么是一个好的设计来实现这个?什么是支持Java的相关工具和实用程序?
我使用撒克逊EE转化和Woodstox的XML解组。
我喜欢简单的方法。我会使用任何SAX,Stax实现,并且不使用任何DOM。但它只是我,也许你会发现在这里一个花哨的图书馆,这将做所有的工作,而不是你:)
DOM中的1GB的XML可以吃你的所有公羊! - 小心你选择什么样的图书馆和他在场景背后使用什么。
我希望它有帮助!
感谢您的建议。 –
只需使用普通的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();
感谢迈克尔的建议,非常感谢。 –
@Paharichora请将我的答案upvote,如果你感激它... – Michael
老实说,我们已经写了相同的代码,因为你已经发布在这里。等待专家的更多建议。 –
您是否考虑过使用XSLT? –
是的,目前我们正在使用XSLT。但是当xmls超过1 GB时性能不佳。...... –
您使用的是哪种XSLT引擎? –