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.

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

Un esempio di XML valido è il seguente:

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:

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

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

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

Convertire un array in una stringa XML

echo $user['firstName'];

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:

Il risultato che otterremo è il seguente:

$user = [
    'firstName' => 'Simone',
    'lastName' => 'D\'Amico',
    'age' => 30
];
$xml = new SimpleXMLElement('<user />');
foreach ($user as $key => $value) {
    $xml->addChild($key, $value);
}
echo $xml->asXML();

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

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here