Funzioni PHP per XML

22 maggio 2017

L'XML (eXtensible Markup Language) è un metalinguaggio per la definizione di linguaggi di markup. Come JSON, l'XML è utilizzato anche per generare documenti che possono essere letti da applicazioni.

Un esempio di XML valido è il seguente:

<?xml version="1.0" encoding="UTF-8"?>
<user>
    <firstName>Simone</firstName>
    <lastName>DAmico</lastName>
    <birthDate>2000-01-01</birthDate>
    <country>IT</country>
</user>

Nel caso si volesse approfondire come funziona il linguaggio XML, prima di procedere è possibile fare riferimento alla Guida XML di base.

Accedere ad un documento XML con PHP

PHP mette a disposizione degli strumenti che ci consentono di leggere e creare file XML.

In questo esempio utilizzeremo un concetto non incluso nella guida PHP: le classi e gli oggetti. Per approfondire questo argomento è possibile consultare la guida alla programmazione a oggetti con PHP

Data una stringa che rappresenta un documento XML, vediamo come accedere alle singole proprietà:

$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<user>
    <firstName>Simone</firstName>
    <lastName>DAmico</lastName>
    <birthDate>2000-01-01</birthDate>
    <country>IT</country>
</user>
XML;

$user = new SimpleXMLElement($xml);
var_dump($user);

La classe SimpleXMLElement ci consente di convertire una stringa XML in un oggetto che possiamo manipolare agevolmente. Eseguendo il codice appena visto, infatti, otteniamo come risultato:

object(SimpleXMLElement)#1 (4) {
  ["firstName"]=>
  string(6) "Simone"
  ["lastName"]=>
  string(6) "DAmico"
  ["birthDate"]=>
  string(6) "2000-01-01"
  ["country"]=>
  string(6) "IT"
}

Ovviamente possiamo accedere anche ai singoli valori contenuti nelle proprietà dell'utente. Dato che in questa guida ancora non è stato introdotto il concetto di classe, per adesso possiamo trasformare l'oggetto in un semplice array ed eseguire le operazioni direttamente sull'array ottenuto:

$user = (array)new SimpleXMLElement($xml);
var_dump($user);

Eseguendo questo codice noteremo che verrà stampato un array e non più un oggetto, questo perché abbiamo effettuato il casting ad array con la keyword (array). A questo punto possiamo quindi accedere al nome dell'utente con:

echo $user['firstName'];

Convertire un array in una stringa XML

Abbiamo visto che possiamo leggere una stringa XML e convertirla in un array PHP in maniera molto semplice. Vediamo invece come effettuare il contrario partendo da un array:

$user = [
    'firstName' => 'Simone',
    'lastName' => 'D\'Amico',
    'age' => 30
];

$xml = new SimpleXMLElement('<user />');
foreach ($user as $key => $value) {
    $xml->addChild($key, $value);
}

echo $xml->asXML();

Il risultato che otterremo è il seguente:

<?xml version="1.0"?>
<user><firstName>Simone</firstName><lastName>D'Amico</lastName><age>30</age></user>

Analizzando il codice abbiamo creato un nuovo oggetto SimpleXMLElement e, ciclando su tutte le proprietà dell'array, le abbiamo aggiunte al nodo <user>. A questo punto attraverso il metodo asXML() abbiamo restituito la stringa contenente l'XML.

Tutte le lezioni

1 ... 39 40 41 ... 57

Se vuoi aggiornamenti su Funzioni PHP per XML inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Funzioni PHP per XML

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy