Большой XML

builder

Новичок
Большой XML

Здраствуйте.
Каким парсером лучше всего пользоваться, какой самый быстрый при работе с большими файлами.
В моем случае xml файл весит 100 метров :(
 

chameleon

Новичок
для больших файлов: SAX, если я правильно понял и ты спрашиваешь про тип API к XML.
 

[DAN]

Старожил PHPClub
builder
Касаемо обработки больших XML-данных более всего подходит модель SAX, как правильно заметил тов. chameleon.

Теперь к обработке.
Сейчас распространены как минимум два подхода к обработке XML-данных (может больше, я не в курсе). Это SAX-подход и DOM-подход.
Первый пропускает через себя весь документ, последовательно обрабатывая кажды тэг, если говорить совсем просто. Суть подхода - документ читается кусками.
Второй загружат весь документ в память в виде DOM-объекта.
Непринципиально, каким языком ты будешь обрабатывать документ (PHP, Perl, C++ etc.). Главное, чтоб этот язык имел API к нижеследующим библиотекам.

Теперь о библиотеках.
1) expat (http://expat.sourceforge.net/) - реализует SAX-подход.
2) libxml (xmlsoft.org) - реализует оба подхода.

Теперь о PHP.
В рhр4 однозначно использовать библиотеку expat и php-модуль XML
В php5 с SAX-парсингом легко справляются XMLReader и SimpleXML (несмотря на объектную ориентированность модуля).

+ статейка:
Processing Large XML Documents with PHP 5
http://blog.bitflux.ch/archive/2004/05/10/processing_large_xml_documents_with_php.html

-~{}~ 01.07.05 20:59:

Поставить эти экстеншены легко.
В php4/5 модуль XML ставится по-умолчанию :)
 

builder

Новичок
Спасиба за столь исчерпывающий ответ,
у меня пхп4 и насколько я понял, мне достаточно просто использовать стандартные функции работы с хмл, чтобы это все работало через сакс??
 

slach

Новичок
правильно понял
смотри комментарии и примеры

http://php.net/manual/en/ref.xml.php
 

flash-vkv

Новичок
меня удевил размер хмл какой смысыл в таком размере ведь парсинг это прожорливая тварь
 

slach

Новичок
flash-vkv - например это номенклатура товара выгруженная из 1С... вполне себе приемлимый размер на несколько десятков тысяч товаров
 

Silencer_SPB

Новичок
Автор оригинала: flash-vkv
меня удевил размер хмл какой смысыл в таком размере ведь парсинг это прожорливая тварь
Сходи на dmoz.org, спроси зачем они свой ODP в виде двухгигабайтного xml файла отдают :)
Грустно думаю чем его парсить то.
 

slach

Новичок
Silencer - XMLReader тебе в помощь
и всякие там временные таблицы в MySQL
 

Silencer_SPB

Новичок
Погуглив нашел среди кучи прочих упоминание о PECL модуле с названием XMLReader.
О нем речь?
 

slach

Новичок
о нем, именно
кстати он очень скоро выйдет из PECL и будет в 5.1. поставляться

примеры использования вот тут:
http://blog.bitflux.ch/archive/2004/05/10/processing_large_xml_documents_with_php.html
 

Silencer_SPB

Новичок
Где б еще приличную доку по xmlreader найти?

SimpleXML как и ожидалось сдох еще на полгиговом файле.
 

builder

Новичок
посмотрел я http://blog.bitflux.ch/archive/2004/05/10/processing_large_xml_documents_with_php.html
но там скрипты инклудят include_once("memreport.php");, а без него не работает :(
как быть?
 
Сверху