Как парсить большие xml на php?

Пользователь

от caterina , в категории: PHP , 3 года назад

Как парсить большие xml на php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 3 года назад

@caterina Вы можете использовать XMLReader() объект для чтения больших XML файлов в PHP, ниже пример кода как пример:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php

$filepath = "/tmp/huge_file.xml";
$xml = new XMLReader();

// Открыть XML файл
if ($xml->open($filepath)) {
    // Начать чтение большого XML файла
    while ($xml->read()) {
        if ($xml->nodeType == XMLReader::ELEMENT) {
            $nodeXml = $xml->readOuterXml();

            $node = simplexml_load_string($nodeXml, SimpleXMLElement::class, LIBXML_NOBLANKS && LIBXML_NOWARNING);

            print_r($node);
        }
    }
    // Закрыть XML файл
    $xml->close();
}


Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от guillermo , 2 года назад

@caterina 

В PHP есть несколько способов парсинга XML:

  1. SimpleXML - это простой интерфейс для парсинга XML, который позволяет доставать данные из XML документа с помощью селекторов XPath.
  2. XMLReader - это потоковый парсер XML, который позволяет парсить большие XML-документы эффективно и избежать проблем с памятью.
  3. DOM - это полноценный документо-ориентированный парсер XML, который позволяет просматривать и изменять XML-документы в памяти.


Для парсинга больших XML-документов рекомендуется использовать XMLReader или SimpleXML с опцией Libxml::PARSE_BIG_LINES.