L'ultimo formato di file che andiamo a presentare è l'eXtensible Markup Language, meglio noto come XML. Si tratta di uno standard che consente di formattare e memorizzare in maniera persistente dati strutturati.
È un formato molto conosciuto nel mondo informatico, tuttavia con l'introduzione della fattura elettronica è probabilmente diventato noto anche ai non addetti ai lavori.
PHP offre un'ampia gamma di funzioni per gestire i documenti in formato XML, qui vedremo solamente alcune di queste in quanto non basterebbe una semplice guida per analizzarle tutte in dettaglio.
Indice dei contenuti
XML è una specifica nata per creare linguaggi di markup (marcatura), ossia linguaggi che consentono di descrivere i dati attraverso l'utilizzo di elementi chiamati tag. XML é molto simile ad HTML come struttura, tuttavia esistono due sostanziali differenze con il linguaggio base utilizzato per creare siti web:
Un documento XML ha estensione .xml
e il suo contenuto è leggibile attraverso un qualsiasi editor di testo semplice. Vediamo un esempio di file XML e analizziamone la sintassi.
Come già detto, un file XML è composto da una serie di tag che descrivono il contenuto del documento. Questi vengono indicati tramite i caratteri < e >.
Un esempio di file XML è il seguente
Abbiamo dato dei nomi personalizzati ai tag. In HTML invece esistono un set di tag da utilizzare per formattare il documento, ad esempio con i tag
realizziamo un paragrafo.
PHP mette a disposizione diverse funzioni per la gestione dei file XML. Vediamo alcune di queste.
Per leggere un documento in formato XML in PHP è possibile utilizzare l'estensione SimpleXML
che, come dice il nome stesso, consente una gestione semplice di questo formato.
Esistono due funzioni che possiamo utilizzare a tale scopo:
simplexml_load_file()
: legge un file in formato XML e restituisce un oggetto della classe SimpleXMLElement.simplexml_load_string()
: legge una stringa in formato XML e restituisce un oggetto della classe SimpleXMLElement.Entrambe le funzioni restituiscono false
in caso di errore.
Nota: Dato che entrambe le funzioni possono restituire valori non booleani che vengono valutati come false
, è bene ricordarsi di usare l'operatore di confronto ===
nelle condizioni.
Prendendo l'esempio precedente, possiamo scrivere il seguente codice PHP
che produce l'output
Nel nostro esempio l'oggetto ritornato rappresenta l'elemento cars
del documento e ha una proprietà di nome car
che contiene a sua volta un altro oggetto SimpleXMLElement, contenente 3 proprietà: brand, model e engine.
Vediamo come è possibile accedere in maniera singola a ciascuno di questi elementi.
Come un qualsiasi altro oggetto, tutte le proprietà di un oggetto della classe SimpleXMLElement
sono accessibili tramite l'operatore ->
.
Vediamo alcuni esempi
Negli esempi mostrati fino ad ora abbiamo utilizzato la sintassi Heredoc tramite il <<<
, che ci consente di gestire stringhe su più righe senza la necessità di effettuare concatenazione e migliorando la leggibilità.
Vediamo adesso un esempio di come leggere un file XML tramite la funzione simplexml_load_file()
.
Supponiamo di avere un file cars.xml
con il seguente contenuto
Vogliamo leggere il file con PHP e mostrare il risultato in una tabella HTML.
Di seguito è mostrato il codice necessario
che dà come output il seguente codice HTML