badlamer/symfony-hybrid-xml-parser

Simple class to parse huge XML files in a memory-efficient way

Installs: 2 064

Dependents: 0

Suggesters: 0

Security: 0

Stars: 3

Watchers: 2

Forks: 2

pkg:composer/badlamer/symfony-hybrid-xml-parser

0.0.2 2016-09-19 20:10 UTC

This package is not auto-updated.

Last update: 2025-10-18 02:06:11 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.