XSLT处理大量XML文件(几乎5 GB)

时间:2015-10-28 19:16:19

标签: java php xml xslt xpath

我正在尝试使用XSLT找到一致的解决方案来转换大量的XML文件(大约5 GB)

Hier是我迄今为止所尝试过的:

  1. 从命令行使用MSXML Parser 4.0(SP3):
  2. > msxsl.exe myfile.xml mysheet.xslt -o output.xml

    内存不足(代码:0x8007000e),文件大于800MB。

    1. 使用Mozilla Firefox或IE通过处理指令应用XSLT:
    2. <?xml version ='1.0'coding ='UTF-8'?>

      <?xml-stylesheet href =“mysheet.xslt”type =“text / xsl”?>

      <根> ...

      浏览器在几分钟后崩溃。

      1. 尝试在Windows上用PHP(Ver 5.4.22)编写自己的XML-Reader,并选择XPath所需的元素
      2. < PHP

        ini_set('max_execution_time',0);

        ini_set('memory_limit',' - 1');

        $ xml = simplexml_load_file('myfile.xml');

        foreach($ xml-> xpath('/ root / node / atribute [@ id =“value”]')as $ result){

        ...

        ......

        }

        ... ......

        Apache服务器崩溃。

        请告诉您在这方面的经历......用Java编写课程怎么样?

        P.S。我不想使用像XmlSplit这样的软件!

1 个答案:

答案 0 :(得分:4)

对于5Gb源文档,您需要一个流处理器,这意味着XSLT 3.0,目前有两个实现,Saxon-EE和Exselt。当然,并非所有的转换都是可流式的(例如,排序很棘手),但是如果你描述了你想要执行的转换,或者给它一个非流式版本,那么我相信我们可以帮助你变成在流媒体下工作的东西。