In questo post, ho pensato di mostrarvi un modo (sicuramente non il migliore) per modificare un file xml ed in particolare per eliminare un item a seconda del contenuto di uno dei suoi paramentri. Veniamo al File xml:
<newslist>
<news>
<ID>1</ID>
<data>21.08.2009</data>
<titolo>Primo inserimento</titolo>
<descrizione>prima news</descrizione>
<immagine>upload/img0.jpg</immagine></news>
<news><ID>2</ID>
<data>22.08.2009</data>
<titolo>Secondo inserimento</titolo>
<descrizione>seconda news</descrizione>
<immagine>upload/img1.jpg</immagine></news>
<news><ID>3</ID>
<data>22.08.2009</data>
<titolo>terzo inserimento</titolo>
<descrizione>terz2 news</descrizione>
<immagine>upload/img2.jpg</immagine></news>
</newslist>
Quello che voglio fare, è analizzare il file XML ed eliminare il la news con id = 1. Come posso fare? La soluzione che propongo è la seguente:
<?php
$file_xml = “file.xml”;
$id_da_escludere = “1″;if (file_exists($file_xml))
{$xml = simplexml_load_file($file_xml);
foreach($xml as $item)if($item->ID!=$id_da_escludere)
{$new_xml .= ”
<news>
<ID>{$item->ID}</ID>
<data>{$item->data}</data>
<titolo>{$item->titolo}</titolo>
<descrizione>{$item->description}</descrizione>
<immagine>{$item->immagine}</immagine>
</news>”;}
}
else
{exit(“Non sono riuscito a trovare il file ‘{$file_xml}’.”);
}
$new_xml = “<newslist>{$new_xml}\n</newslist>”;
?>
<pre>
<?php echo htmlentities($new_xml); ?>
</pre>
Il risultato di questo codice, sarà un file xml del tutto simile a quello presente all’inizio del post, con l’eccezione che non sarà più presente la news con id = 1:
<newslist>
<news>
<ID>2</ID>
<data>22.08.2009</data>
<titolo>Secondo inserimento</titolo>
<descrizione>seconda news</descrizione>
<immagine>upload/img1.jpg</immagine></news>
<news><ID>3</ID>
<data>22.08.2009</data>
<titolo>terzo inserimento</titolo>
<descrizione>terz2 news</descrizione>
<immagine>upload/img2.jpg</immagine></news>
</newslist>