SimpleXml è una libreria inclusa di default in PHP5 che rende molto più semplice e veloce, il modo per accedere a file XML rispetto all’uso delle librerie DOM e SAX in PHP4.
Conoscendo la struttura del documento XML, utilizzando SimpleXml possiamo ottenere in modo semplice; l’attributo, il nome ed il contenuto di un elemento.
Facciamo un ‘ esempio per capire subito la semplicità d’uso di questa libreria.
Abbiamo un file XML del tipo:
<?xml version='1.0' ?> <libri> <libro id="1"> <titolo>La Divina Commedia</titolo> <autore>Dante Alighieri</autore> </libro> <libro id="2"> <titolo>I Promessi Sposi</titolo> <autore>Alessandro Manzoni</autore> </libro> <libro id="3"> <titolo>I Malavoglia</titolo> <autore>Giovanni Verga</autore> </libro> <libro id="4"> <titolo>La Morsa</titolo> <autore>Luigi Pirandello</autore> </libro> </libri>
Come si può vedere il documento XML rappresenta una lista di libri,
e per ogni libro sono specificati il titolo e l’autore.
Ora creiamo la pagina PHP che ci permette di visualizzare a video titolo ed autore per ogni libro.
Il codice sarà:
<?php //carico in memoria il file xml $xml=simplexml_load_file("libri.xml"); //stampo a video titolo e autore per ogni libro foreach($xml->libro as $libro) { echo "Libro id= ".$libro['id']." - Titolo: ".$libro->titolo." - Autore:".$libro->autore."<br />"; } ?>
Esempio di Simplexml con Xpath
Utilizzando il metodo Xpath possiamo fare ricerche all’interno del documento Xml sotto forma di query tipiche del linguaggio XPath che è uno standard del W3C.
Facciamo un esempio volendo accedere al libro con id=2:
<?php $xml=simplexml_load_file("libri.xml"); $arr = $xml->xpath("/libri/libro[@id=2]"); //array che contiene le informazioni relative al libro con id=2 print_r($arr); ?>
Oppure vogliamo visualizzare tutti gli autori, la query xpath sara’:
<?php $xml=simplexml_load_file("libri.xml"); $arr = $xml->xpath("/libri/autore"); //stampo a video tutti gli autori. foreach($arr as $item) { echo $item[0]."<br />"; } ?>
Consideriamo un altro esempio nel caso invece, vogliamo aggiungere un nuovo elemento.
In questo caso vogliamo aggiungere un altro libro e il suo autore.
Il codice sarà:
//carico in memoria il file xml $xml = simplexml_load_file("libri.xml"); //aggiungo un nuovo libro $libri = $xml->addChild('libro'); //che avra id con valore 5 $libri->addAttribute('id', '5'); //e quindi titolo e autore del libro $titolo = $libri->addChild('titolo', 'Numero Zero'); $data = $libri->addChild('autore', 'Umberto Eco'); //apro il file in scrittura $f = fopen("libri.xml", "w"); //e quindi scrivo sul file xml il nuovo contenuto fwrite($f, $xml->asXML()); //chiudo il file fclose($f); ?>
Per ulteriori informazioni su SimpleXML, possiamo fare riferimento alla documetazione ufficiale.