PHP Modificare file XML con SimpleXML
Link sponsorizzati
L’altra volta ho parlato di come leggere un file XML tramite SimpleXML, bene, oggi, parlerò invece di come modificare un file XML, sempre con SimpleXML.
Partiamo dall’esempio dell’altra volta, stesso file, però un pò modificato!
<utente>
<nick>pippo</nick>
<pass>pluto</pass>
<permessi>Utente</permessi>
</utente>
<utente>
<nick>pippo 2</nick>
<pass>pluto 2</pass>
<permessi>Moderatore</permessi>
</utente>
</parent>
Facciamo finta di voler promuovere a moderatore anche pippo. Questo snippet mostra come fare
Link sponsorizzati
//file.xml è il file che contiene il codice xml che ho stampato sopra
$xml = simplexml_load_file("file.xml");
//stampa nick e password separati da un -
foreach($xml->utente as $item)
if($item->nick == "pippo") //se l'utente è pippo
$item->permessi = "Moderatore"; //lo promuovo!
echo "<pre>".htmlentities($xml->asXML())."</pre>";
?>
Ora, se analizziamo l’output di questo script ci verrà fuori:
<utente>
<nick>pippo</nick>
<pass>pluto</pass>
<permessi>Moderatore</permessi>
</utente>
<utente>
<nick>pippo 2</nick>
<pass>pluto 2</pass>
<permessi>Moderatore</permessi>
</utente>
</parent>
Che è quello che ci aspettiamo, cioè, entrambi gli utenti moderatori. Però, ora, se andiamo a leggere il codice sorgente del file file.xml, esso sarà quello di prima, invariato, con pippo che ha permessi di semplice utente. Ora, per modificare anche il file, bisogna sovrascriverlo, per fare ciò basta questo alla fine dello script.
Ricapitolando quindi, il codice completo per modificare il file xml sarà questo
//file.xml è il file che contiene il codice xml che ho stampato sopra
$xml = simplexml_load_file("file.xml");
//stampa nick e password separati da un -
foreach($xml->utente as $item)
if($item->nick == "pippo") //se l'utente è pippo
$item->permessi = "Moderatore"; //lo promuovo!
//sovrascrivo il file
$f = fopen("file.xml", "w");
fwrite($f, $xml->asXML());
fclose($f);
?>
Link sponsorizzati


ciao, ti volevo chiedere, invece di modificare, come si può fare per aggiungere un nodo al file xml?
grazie
Ciao, pensavo di aver già trattato l’argomento, invece cercando non c’è. Comunque ho appena fatto un post su questo!
Leggi qui http://codesnippet.biz/php-aggiungere-un-nodo-ad-un-file-xml-con-simplexml/
Grazie era proprio quello di cui avevo bisogno
Mirko