Я пытаюсь прочитать большой XML-файл (около 40 МБ) и использовать эти данные для обновления БД моего приложения.
Похоже, я нашел хороший компромисс с точки зрения прошедшего времени.время / память с использованием XMLReader и simplexml_import_dom (), но я не могу получить значение атрибутов с двоеточием в их имени ... например <g:attr_name>
.
Если я просто использую $ reader-> read ()Функция для каждого узла «product» позволяет извлекать значение как $ reader-> value, но если я раскрываю () узел и копирую его с помощью $ doc-> importNode, эти атрибуты игнорируются.
$reader = new XMLReader();
$reader->open(__XML_FILE__);
$doc = new DOMDocument;
while ($reader->read()) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT):
if($reader->localName=="product"){
$node = simplexml_import_dom($doc->importNode($reader->expand(), true));
echo $node->attr_name."<br><br>";
$reader->next('product');
}
}
}
Вероятно, я что-то упускаю ... любой совет будет очень ценным!
Спасибо.