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?