RSS
 

simple_xml_load_file() & foreach() per modificare un file XML con php

22 Aug

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>

Condividi questo post sui tuoi social network preferiti:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Twitter
  • Wikio IT
  • Live
  • RSS
  • StumbleUpon
  • Technorati
 
View Comments

Posted in tutto

 

Tags: , , ,

blog comments powered by Disqus