Tutorial PHP XML: crea, analizza, leggi con l'esempio
โก Riepilogo intelligente
PHP e XML collaborano per strutturare, archiviare e scambiare dati tra sistemi. Questa guida illustra XML, il DOM e i parser XML, per poi mostrare come leggere un documento XML con SimpleXML e come crearne uno con la classe DOMDocument, concludendo con un'analisi di quando utilizzare ciascuno di essi.

Cos'รจ l'XML?
XML รจ l'acronimo di Extensible Markup Language.
XML viene utilizzato per strutturare, archiviare e trasferire dati da un sistema all'altro.
XML รจ simile a HTML. Utilizza tag di apertura e chiusura. A differenza di HTML, XML consente agli utenti di definire i propri tag.
Cos'รจ DOM?
DOM รจ l'acronimo di Document Object Model.
Si tratta di uno standard multipiattaforma e indipendente dal linguaggio che definisce come accedere e manipolare i dati in:
- HTML
- XHTML
- XML
DOM XML viene utilizzato per accedere e manipolare documenti XML. Esso visualizza il documento XML come una struttura ad albero.
Parser XML
Un parser XML รจ un programma che traduce un documento XML in un oggetto DOM (Document Object Model) XML.
L'oggetto XML DOM puรฒ quindi essere manipolato utilizzando Javasceneggiatura, PythonPHP e altri linguaggi.
La parola chiave CDATA, acronimo di (unparsed) Character Data, viene utilizzata per ignorare i caratteri speciali come โ<โ e โ>โ durante lโanalisi di un documento XML.
Perchรฉ utilizzare XML?
- I servizi web come SOAP e REST utilizzano il formato XML per lo scambio di informazioni. Imparare cos'รจ XML e come funziona offre un vantaggio competitivo agli sviluppatori, poichรฉ le applicazioni moderne fanno ampio uso di servizi web.
- I documenti XML possono essere utilizzati per memorizzare le impostazioni di configurazione di un'applicazione.
- Consente di creare tag personalizzati, il che lo rende piรน flessibile.
Esempio di documento XML
Supponiamo che tu stia sviluppandoping Un'applicazione che recupera dati da un servizio web in formato XML.
Di seguito รจ riportato un esempio di come appare il documento XML.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
QUI,
- โ " specifica la versione XML e la codifica da utilizzare
- โ " รจ l'elemento radice.
- โ โฆ " sono gli elementi figlio, uno per ogni record del dipendente.
Come leggere XML utilizzando PHP
Scriviamo ora il codice che leggerร il documento XML dei dipendenti e visualizzerร i risultati in un browser web. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
QUI,
- โ$xml = simplexml_load_file('employees.xml');โ utilizza la funzione simplexml_load_file per caricare il file denominato employees.xml e assegnarne il contenuto alla variabile $xml.
- โ$list = $xml->record;โ ottiene il contenuto dei nodi record.
- โfor ($i = 0; $i < count(โฆ)โฆโ รจ il ciclo for che legge l'array e restituisce i risultati
- โ$lista[$i]->attributi()->man_no;โ legge l'attributo man_no dell'elemento
- โ$lista[$i]->nome;โ legge il valore dell'elemento figlio name
- โ$lista[$i]->posizione;โ legge il valore dell'elemento figlio posizione
Test del lettore XML
Supponendo che tu abbia salvato il file index.php nella cartella phptuts/xml, vai al URL http://localhost/phptuts/xml/index.php
Come creare un documento XML utilizzando PHP
Vedremo ora come creare un documento XML utilizzando PHP.
Il codice seguente utilizza la classe integrata PHP DOMDocument per creare un documento XML.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
QUI,
- โ$dom = new DOMDocument();โ crea un'istanza della classe DOMDocument.
- โ$dom->codifica = 'utf-8';โ imposta la codifica del documento su utf-8
- โ$dom->xmlVersion = '1.0';โ specifica il numero di versione 1.0
- โ$dom->formatOutput = true;โ garantisce che l'output sia ben formattato
- "$root = $dom->createElement('Film');" crea il nodo radice denominato Film
- โ$attr_movie_id = new DOMAttr('movie_id', '5467');โ definisce l'attributo movie_id del nodo film
- โ$dom->createElement('ElementName', 'ElementValue')โ crea un nodo figlio. ElementName specifica il nome dell'elemento, ad esempio Titolo. ElementValue imposta il valore del nodo figlio, ad esempio La Campagna.
- โ$root->appendChild($movie_node);โ aggiunge il nodo film al nodo radice Film
- โ$dom->appendChild($root);โ aggiunge il nodo radice al documento XML.
- โ$dom->salva($xml_nome_file);โ salva il file XML nella directory principale del server web.
- Il comando โecho โ$xml_file_name รจ stato creato correttamenteโ;โ visualizza un messaggio di successo.
Test dell'XML Creator
Supponendo che tu abbia salvato il file create_movies_list.php nella cartella phptuts/xml, vai al URL http://localhost/phptuts/xml/create_movies_list.php
Apri il file movies_list.xml.
SimpleXML vs DOMDocument
PHP offre due modalitร principali per lavorare con XML. SimpleXML รจ ideale quando si ha bisogno principalmente di leggere dati, mentre DOMDocument offre un controllo piรน preciso per la creazione e la modifica intensiva di documenti. La tabella seguente le confronta.
| Aspetto | SimpleXML | DOMDocument |
|---|---|---|
| Facilitร d'uso | Molto semplice; il documento si comporta come oggetti annidati | API piรน dettagliata e basata sui nodi |
| migliori per | Lettura e leggera revisione | Creazione di documenti e manipolazione complessa |
| Stile di accesso | $xml->record->name | createElement() e appendChild() |
| Supporto XPath | Sรฌ, tramite ->xpath() | Sรฌ, tramite la classe DOMXPath |
Una regola pratica รจ quella di utilizzare SimpleXML come primo strumento per la lettura di feed e file semplici, e passare a DOMDocument quando รจ necessario creare documenti, inserire nodi in posizioni specifiche o eseguire la convalida rispetto a uno schema.



