XSLT处理大量XML文件(差不多5 GB)

我试图找到一个使用XSLT来转换大型XML文件的一致解决方案(几乎5 GB)

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

  1. 从命令行使用MSXML Parser 4.0(SP3):

> msxsl.exe myfile.xml mysheet.xslt -o output.xml

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

  1. 使用Mozilla Firefox或IE通过处理指令应用XSLT:

浏览器在几分钟后崩溃。

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

<?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编写课程怎么样?

PS我不想使用像XmlSplit之类的软件!

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