Как обработать xml-документ большого размера?

Статус
В этой теме нельзя размещать новые ответы.

Matinier

Постоялец
Регистрация
5 Окт 2009
Сообщения
65
Реакции
4
Имеется xml-документ, размер которого составляет 160 МБ.
Надо преобразовать его в другой xml-документ (поменять название узлов, добавить/удалить некоторые атрибуты, взяв при этом только часть информации из каждого узла).
Пробовал применить для этой цели SimpleXML - не грузится в DOM.
Применил XMLReader - памяти хватает, но при обращении к скрипту на сервере все-равно вылетает 502 Gateway Timeout.
Возможно ли регулярками обработать документ такого объема быстрее, чем разного рода специализированными классами PHP?
И вообще: каким инструментом можно разобрать/преобразовать xml-файл такого объема?
 
TextPipePro - решение всех твоих проблем
Есть на форуме...
 
Хорошая утилита, однако возникает другой вопрос: как к ней обратится из php-скрипта. Просто мне нужно, что бы юзер мог загрузить выходной документ с адреса типа: Для просмотра ссылки Войди или Зарегистрируйся
Да и еще один момент: на сервере, где лежит скрипт, может стоять только лицензионное ПО :confused:

Нет, эта программа мне не подходит.
 
Имеется xml-документ, размер которого составляет 160 МБ.
Надо преобразовать его в другой xml-документ (поменять название узлов, добавить/удалить некоторые атрибуты, взяв при этом только часть информации из каждого узла).
Пробовал применить для этой цели SimpleXML - не грузится в DOM.
Применил XMLReader - памяти хватает, но при обращении к скрипту на сервере все-равно вылетает 502 Gateway Timeout.
Возможно ли регулярками обработать документ такого объема быстрее, чем разного рода специализированными классами PHP?
И вообще: каким инструментом можно разобрать/преобразовать xml-файл такого объема?
Вариант Для просмотра ссылки Войди или Зарегистрируйся пробовали?
+ как вариант разбить файл на несколько частей и прочитать его
 
Вообще регулярки быстрее различных анализаторов DOM и XPath.
 
У меня тоже такое впечатление. Проблему решили - увеличили время для отработки скрипта на сервере и документ разобрался XMLReader'ом.

KillDead, функция полезная но есть один нюанс (можно ее доработать в принципе:( если один из узлов содержит данные CDATA, то этот парсер отвалиться.
Пример:

<vendor><![CDATA[5 яблок > 3 апельсинов]]></vendor>

во-первых формат записи CDATA приведет к ошибке; во-вторых к ошибке приведет символ ">", хотя я имею полное право его вставить в запись CDATA.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху