Cerare XML con PHP e SimpleXml
Già di per se creare XML con PHP è easy, ma lo è ancor di più usando SimpleXML!
Questa estensione è presente da PHP versione 5 e richiede l'installazione di libxml, che in genere è già installato di default.
In pratica se avete PHP 5 dovreste poter usare SimpleXml senza problemi.
Oggi vediamo come usare questa estensione per produre XML ben formato, usando l'oggetto SimpleXMLElement.
Supponiamo di avere una tabella su database con clienti, e vogliamo creare un file XML con tutti i clienti.
La struttura che vogliamo dargli è questa:
<clienti>
<cliente>
<codice></codice>
<ragione_sociale></ragione_sociale>
<mnemonico></mnemonico>
<indirizzo></indirizzo>
<telefono></telefono>
<email> </email>
</cliente>
</clienti>
Bene, ecco il codice per produrre XML:
include_once '../lib/conn_file.php';
$clienti = new Clienti(Connessione::getInstance());
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><clienti></clienti>');foreach ($clienti->getClienti'() as $var) {
$cl = $xml->addChild('cliente');
$cl->addChild('codice', $var['cliente_codice']);
$cl->addChild('ragione_sociale', $var['cliente_ragsoc']);
$cl->addChild('mnemonico', $var['cliente_mnem']);
$cl->addChild('indirizzo', $var['cliente_indirizzo']);
$cl->addChild('telefono', $var['cliente_telefono']);
$cl->addChild('email', $var['cliente_email']);
}Header('Content-type: text/xml');
echo $xml->asXML();
L'oggetto Clienti rappresenta la mia tabella, e la funzione getClienti serve per iterare sulla tabella ed estrarre i record.
Poi creiamo un oggetto SimpleXMLElement; la prima parte serve per impostare il charset, e poi va indicato il tag root del file.
Nel ciclo aggiungo un tag cliente per ogni riga, e all'interno aggiungo un tag con le informazioni che mi servono.
Come vedete è tutto molto semplice, basta richiamare la funzione addChild sull'elemento che ci serve.
Per aggiungere attributi possiamo usare la funzione addAttribute sul tag che vogliamo.
Se devo essere sincero continuo a preferire JSON, ma vista la semplicità di questa estensione direi che XML ha guadagnato punti.
Enjoy!
php xml json addchild addattribute simplexml simplexmlelement
Commentami!