Чем открыть большой xml?

Для одного из своих проектов мне потребовалась актуальная информация по регионам и городам РФ. Для этой цели я скачал ФИАС, это аналог КЛАДРа (Классификатор адресов России), только более продвинутый. Скачав архив, весьма внушительных размеров, я встал перед проблемой: надо распарсить xml размером в 1,1 Гб. Признаюсь честно, до этого не имел дела с xml-файлами такого объема и само собой я не имел понятия как его открыть, попытка открыть в каком нибудь текстовом редакторе сразу же приводила либо к зависанию программы, либо всей системы. Напрашивался вывод: файл необходимо обрабатывать кусками не загружая его в память полностью.

Загрузка большого xml

Обработку я реализовал на PHP, для этого я воспользовался классом XMLReader. Вот что говорит нам PHP.NET:

Расширение XMLReader — синтаксический анализатор XML. Класс-читатель выступает в качестве курсора, следует по потоку документа и останавливается на каждом узле на этом пути.

Важно отметить, что библиотека libxml внутри использует кодировку UTF-8 и, таким образом, кодировка извлекаемого содержимого всегда будет в кодировке UTF-8.

Вот и пример обработки:

$xml = new XMLReader();
$xml->open( '/путь/до/файла.xml' );
while( $xml->read() ) {
  /*
    $xml->localName - получить имя текущего элемента
    $xml->value - получить значение элемента
    $xml->getAttribute( 'имя атрибута' ) - получить значение атрибута по его имени
  */
}
$xml->close();

Информацию по всем методам смотрите на этой странице.

Пожалуйста, оцените статью

Полная фигняУзнал немного новогоНормальная статьяХорошая статьяСупер! (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Подпишитесь на рассылку и получайте новые статьи на почту