Я пытаюсь найти последовательное решение, используя XSLT для преобразования огромных XML файлов (почти 5 ГБ)
Это то, что я пробовал до сих пор:
> msxsl.exe myfile.xml mysheet.xslt -o output.xml
В этом заканчивается память (код: 0x8007000e) с файлами размером более 800 МБ.
<? xml version = '1.0' encoding = 'UTF-8'?>
<? xml-stylesheet href= "mysheet.xslt" type = "text/xsl"?>
<Корень>...
Браузер падает через пару минут.
<? 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 = "значение"]') как $ result) {
...
......
}
.........
Сбой сервера Apache.
Расскажите о своем опыте в этой области... А как насчет написания класса на Java?
PS Я не хочу использовать программное обеспечение, такое как XmlSplit или что-то в этом роде!
Для исходного документа 5Gb вам понадобится потоковый процессор, а это означает XSLT 3.0, который в настоящее время имеет две реализации: Saxon-EE и Exselt. Конечно, не все преобразования являются потокобезопасными (например, сортировка сложна), но если вы описываете преобразование, которое хотите выполнить, или даете ему версию без потоковой передачи, то я уверен, что мы можем помочь вам превратиться в то, что работает при потоковой передаче.