Leia um atributo namespaced de um SimpleXmlElement (importado de XMLReader)

Estou tentando ler um arquivo xml grande (cerca de 40 MB) e usar esses dados para atualizar o banco de dados do meu aplicativ

Parece que encontrei um bom compromisso em termos de tempo / memória decorrido usando XMLReader e simplexml_import_dom (), mas não consigo obter o valor dos atributos com dois pontos no nome deles ... por exemplo<g:attr_name>.

Se eu simplesmente usar a função $ reader-> read () para cada nó "produto", posso recuperar o valor como $ reader-> value, mas se eu expandir () o nó e copiá-lo com $ doc-> importNode, este atributo são ignorados.

    $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');

                } 

        }
    }

Provavelmente sinto falta de alguma coisa ... qualquer conselho seria realmente apreciado!

Obrigado

questionAnswers(1)

yourAnswerToTheQuestion