转换巨大的xml文件的技术?

时间:2016-08-05 10:04:14

标签: java xml xslt vtd-xml

在我们的组织中,我们有业务应用程序,它使用xlst超过10年来在系统之间转换数据。所以随着时间的推移这些文件转换:

XML-> XSL-> XML 变得非常耗时。

因此输入XML变为100MB - 200MB。但是现在我们有2,3,4 GB的xml,主要是在系统同步期间,所以我们想用更先进的技术替换xslt(版本1.0)。在具有最大数据结构的未来,这个数字甚至可以上升。

出于这个原因,我研究了不同的方法,但想知道哪个是最好的:

  1. 将xslt转换从版本1.0重写为2.0(3.0?)并使用最快的处理器以减少时间和内存消耗。(我们有超过30个转换,包含1000行转换/模板规则。)实现xslt traformations的最佳做法。
  2. enter image description here  2.使用Xquery进行转换。 Here据说,对于在大xml文件中搜索数据,XQuery很好。但我们需要转换整个xml并进行大型xml到xml的转换。所以我想知道这是否合适。

    1. 使用VTD-XML世界上最快的XML解析器。 它支持XML超过2GB的

      VTDGenHuge vgh = new VTDGenHuge();

    2. http://vtd-xml.sourceforge.net/codeSample/cs12.html

        

      com.ximpleware标准VTD-XML支持最大2GB的文档大小   com.ximpleware.extended扩展的VTD-XML,最高支持256GB   文件大小

      1. 等。

1 个答案:

答案 0 :(得分:2)

XSLT 3.0正在进行中,但其新功能之一是https://www.w3.org/TR/xslt-30/#streaming,您可以在其中编写内存消耗有限的样式表,与XSLT 1.0和2.0相反,处理器不会构建完整的树。输入,而是在处理每个节点后读取输入,只保留节点及其祖先的子树。 Saxon 9 EE实现了http://saxonica.com/html/documentation/sourcedocs/streaming/。主要目的是允许您处理XSLT 2.0不适合内存的非常大的输入文档,缺点是您只能使用一组受限制的XSLT和XPath,因此现有的XSLT样式表可能不起作用并且可能需要要重写为仅使用允许进行流处理的功能。