我正在尝试使用 XSLT 找到一致的解决方案来转换巨大的 XML 文件(几乎 5 GB)
这是我迄今为止尝试过的:
- 从命令行使用 MSXML Parser 4.0 (SP3):
>msxsl.exe myfile.xml mysheet.xslt -o 输出.xml
文件大于 800MB 时,内存不足(代码:0x8007000e)。
- 使用 Mozilla Firefox 或 IE 通过处理指令应用 XSLT:
<根目录>...
几分钟后浏览器崩溃。
- 尝试在 Windows 上用 PHP(版本 5.4.22)编写我自己的 XML 阅读器,并使用 XPath 选择我需要的元素
ini_set('max_execution_time', 0);
ini_set('内存限制', '-1');
$xml = simplexml_load_file('myfile.xml');
foreach($xml->xpath('/root/node/atribute[@id="value"]') as $result){
...
... ...
}
... ……
Apache 服务器崩溃。
请谈谈您在这方面的经验...用 Java 编写一个类怎么样?
附注我不想使用 XmlSplit 之类的软件!
最佳答案
对于 5Gb 源文档,您需要一个流处理器,这意味着 XSLT 3.0,目前有两种实现:Saxon-EE 和 Exselt。当然,并非所有转换都是可流式的(例如,排序很棘手),但是如果您描述要执行的转换,或者给出它的非流式版本,那么我相信我们可以帮助您将在流媒体下工作的东西。
关于java - XSLT 处理巨大的 XML 文件(几乎 5 GB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33399697/