Как обработать XML размером > 50 мб

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

bvb

Мастер
Регистрация
17 Май 2009
Сообщения
189
Реакции
31
Подскажите как?
 
А в чем вопрос то?
 
А в чем вопрос то?
Вопрос вынесен в название темы. А конкретнее ну скажем в файле есть узлы с числовыми аттрибутами и надо просуммировать значения этих аттрибутов.
 
Вопрос вынесен в название темы. А конкретнее ну скажем в файле есть узлы с числовыми аттрибутами и надо просуммировать значения этих аттрибутов.


Вопросов связанных с обработкой XML огромное множество, как по Вашему я должен угадать, что именно требуется Вам?
Оформляйте вопрос, более полно, предоставляйте максимум информации, чтобы было понятно.

Хорошо, что именно составляет сложность?
Разбор XML?
Написание скрипта, который посчитает общую сумму?
 
судя по размеру файла, вам нужен SAX парсер
он предназначен для разбора XML-документов сколь угодно большого размера
дальше думаю сами справитесь-примеров в сети по работе с SAX более чем достаточно
 
  • Нравится
Реакции: bvb
судя по размеру файла, вам нужен SAX парсер
он предназначен для разбора XML-документов сколь угодно большого размера
дальше думаю сами справитесь-примеров в сети по работе с SAX более чем достаточно

Какая разница, какой размер файла?
Всегда есть выбор писать самому, или искать готовое решение.
 
Проблема в подсчете. Но сейчас я стал задумываться о том, чтобы загружать xml файл в базу mysql. Что вы скажете об этом?
 
Как вариант, на мой взгляд даже наиболее удобный.
Сначала рекурсивно обходите xml, получившийся массив, записываете в БД. Ну или нужные Вам значения массива.
В итоге у Вас получиться колонка с определенными атрибутами, ее выводите в цикле и считаете сумму.
 
Какая разница, какой размер файла?
Всегда есть выбор писать самому, или искать готовое решение.
огромная разница
попробуй XML-документ размером в 40ГБ отпарсить DOM-парсером
у тебя ничего не выйдет, так как он тупо не влезет в оперативку
а теперь тоже самое с помощью SAX-парсера.
легко и не принужденно, по скорости ненамного медленнее обычного чтения с файла.
 
А конкретнее ну скажем в файле есть узлы с числовыми аттрибутами и надо просуммировать значения этих аттрибутов.

Чувак, так для этого вовсе не надо парсить XML. ОБычным образом читаешь построчно файл через gets() (и пофигу, какого он там у тебя размера, в память он читается построчно и поэтому проблем нет), и дальше каждую строчку ты делаешь preg_match на предмет нахождения твоего узла с числовым атрибутом. Если нашел - прибавляешь. Все.

Способ, конечно, некошерный, но если у тебя действительно стоит такая задача, то имхо проще сделать и забыть, чем разбираться как "по-правильному" отпарсить то, что не влазит в память. Как в том анекдоте, "вам шашечки или ехать?".
 
  • Нравится
Реакции: bvb
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху