PHP XMLReader lê, edita Nó, escreve XMLWriter

Eu tenho um arquivo XML que é muito muito grande (milhões de registros). Devido a restrições de velocidade e memória, pretendo usarXMLReader/XMLWriter.

Preciso ler o arquivo, obter um registro, alterar seu atributo e, finalmente, salvar XML novamente.

Para testar, criei um arquivo XML e escrevi alguns registros nele usando estas linhas:

$doc = new XMLWriter();  
$doc->openURI($xmlFile);  
$doc->startDocument('1.0','UTF-8');  
$doc->setIndent(4);   
$doc->startElement('DBOS'); 
for($r=0;$r<10; $r++){
    $doc->startElement('ITEMS');
    for($i=0;$i<5; $i++){
        $doc->startElement('ITEM');  
        $doc->writeAttribute('id', $r.'-'.$i);
        $doc->endElement();
    }
    $doc->endElement();
}
$doc->endElement();  
$doc->endDocument();   
$doc->flush();

Eu li novamente usando isso:

$reader = new XMLReader();
if (!$reader->open($xmlFile)){
    die("Failed to open 'data.xml'");
}
while($reader->read()){
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'ITEMS') {
        $node = $reader->expand();
        $items = $node->childNodes;
        foreach ($items as $ik => $itm ){
            print $itm->textContent.'<br/>';
            // how to change the ID Attribute of a Node (DomNode) and save changes to the original XML File 
        }
        break;
    }
}
$reader->close();

Minha pergunta: Como alterar oid atributo de umDomNode e salve as alterações no arquivo XML originalusando XMLWriter novamente?

questionAnswers(1)

yourAnswerToTheQuestion