badlamer / symfony-hybrid-xml-parser
Simple class to parse huge XML files in a memory-efficient way
0.0.2
2016-09-19 20:10 UTC
Requires
- php: >=5.3.0
- ext-libxml: *
- symfony/css-selector: @stable
- symfony/dom-crawler: @stable
This package is not auto-updated.
Last update: 2024-11-15 21:49:45 UTC
README
Класс для разбора больших XML-файлов без загрузки их в память. Схема работы проста: файл проходится XMLReader'ом, для каждого интересующего нас элемента XML вызывается предварительно заданный обработчик, которому в качестве аргумента передаётся содержимое этого элемента в виде Symfony DomCrawler.
Выглядит это как-то так:
<?php use Symfony\Component\DomCrawler\Crawler; $parser = new HybridXMLParser; $parser // Вешаем обработчик на путь в XML ->bind('/FictionBook/description/title-info/author', function(Crawler $author, $parser) { print_r($author); }) // И ещё один ->bind('/FictionBook/description/title-info/translator', function(Crawler $translator, $parser) { print_r($translator); // Так можно немедленно завершить парсинг $parser->stop(); }) // Запускаем ->process('somebook.fb2') ->process('anotherbook.fb2');
В качестве обработчика можно указывать всё, для чего is_callable() возвращает true.