XSLT处理大量XML文件(差不多5 GB)
我试图找到一个使用XSLT来转换大型XML文件的一致解决方案(几乎5 GB)
Hier是我迄今为止所尝试过的:
- 从命令行使用MSXML Parser 4.0(SP3):
> msxsl.exe myfile.xml mysheet.xslt -o output.xml
内存不足(代码:0x8007000e),文件大于800MB。
- 使用Mozilla Firefox或IE通过处理指令应用XSLT:
…
浏览器在几分钟后崩溃。
- 尝试在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。 当然,并非所有的转换都是可流式的(例如,排序很棘手),但是如果你描述了你想要执行的转换,或者给它一个非流式版本,那么我相信我们可以帮助你变成在流媒体下工作的东西。