Home / Programmazione / PHP / Cerare XML con PHP e SimpleXml
Mattepuffo

Cerare XML con PHP e SimpleXml

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!