Come manipolare i dati XML con PHP e gestire eventuali errori dovuti a malformazioni del tracciato che si vuole leggere
SimpleXML è una classe di PHP che permette di manipolare dati XML in modo semplice e conveniente. È possibile accedere ai dati XML come se fossero oggetti e iterare su di essi come se fossero array. La classe offre una vasta gamma di funzioni utile per la gestione dei tracciati, ma non gestisce in automatico eventuali malformazioni.
Questa classe, infatti, nel caso in cui l’XML che stiamo tentando di leggere non rispetti particolari requisiti, come il corretto annidamento di ogni singolo tag, una codifica corretta, oppure tutti i tag vuoti correttamente chiusi, fallisce il parsing e restituisce un errore. Per questo motivo prima della lettura dell’XML dobbiamo eseguire un controllo dello stesso e per farlo possiamo utilizzare la funzione simplexml_load_string()
.
Sostanzialmente, richiamando la funzione con in input il nostro XML in formato stringa, possiamo ottenere il tracciato nell’oggetto SimpleXMLElement
se questo è corretto. In caso negativo, ovvero il tracciato è malformato, restituirà false, ed a quel punto possiamo utilizzare la funzione libxml_get_errors
per ottenere l’elenco degli errori riconosciuti dalla validazione.
Possiamo riassumere il tutto in questo blocco di codice
$xml = simplexml_load_string($xml_string);
if ($xml === false) {
$errors = libxml_get_errors();
foreach ($errors as $error) {
echo "Error: {$error->message}\n";
}
libxml_clear_errors();
}
Chiaramente, se la funzione restituisce l’oggetto SimpleXMLElement
possiamo procedere con le nostre operazioni.