Чтение атрибута пространства имен из SimpleXmlElement (импортировано из XMLReader)

Я пытаюсь прочитать большой xml-файл (около 40 МБ) и использовать эти данные для обновления базы данных мое приложение.

Кажется, я нашел хороший компромисс с точки зрения затраченного времени / памяти с помощью XMLReader и simplexml_import_dom (), но я не могу получить значения атрибутов с двоеточием в их имени ... например .

Если я просто использую функцию $ reader-> read () для каждого "продукта" узел я могу получить значение как $ 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');

                } 

        }
    }

Возможно, я что-то пропустил ... любой совет был бы действительно оценен!

Спасибо.

6
задан Gordon 14 May 2011 в 14:59
поделиться