alexanderk23 / hybrid-xml-parser
Simple class to parse huge XML files in a memory-efficient way
Installs: 3 578
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2025-03-06 16:25:13 UTC
README
Класс для разбора больших XML-файлов без загрузки их в память. Схема работы проста: файл проходится XMLReader'ом, для каждого интересующего нас элемента XML вызывается предварительно заданный обработчик, которому в качестве аргумента передаётся содержимое этого элемента в виде SimpleXMLElement.
Выглядит это как-то так:
<?php $parser = new HybridXMLParser; $parser // Вешаем обработчик на путь в XML ->bind('/FictionBook/description/title-info/author', function(\SimpleXMLElement $author, $parser) { print_r($author); }) // И ещё один ->bind('/FictionBook/description/title-info/translator', function(\SimpleXMLElement $translator, $parser) { print_r($translator); // Так можно немедленно завершить парсинг $parser->stop(); }) // Запускаем ->process('somebook.fb2') ->process('anotherbook.fb2');
В качестве обработчика можно указывать всё, для чего is_callable() возвращает true.