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, un formato basato su tag che consente di definire tag personalizzati per strutturare e trasportare i dati.
  • ๐ŸŒณ Il DOM: Il Document Object Model (DOM) considera un documento XML o HTML come una struttura ad albero, consentendo al codice di navigare e modificare i nodi.
  • ๐Ÿ”„ Analizzatori XML: Un parser converte un documento XML in un oggetto DOM che PHP, JavaSceneggiatura, o Python sa leggere e modificare.
  • ???? Lettura XML: simplexml_load_file carica un file in oggetti, quindi si accede ai record con una sintassi a freccia come $xml->record->name.
  • ๏ธ Creazione del file XML: La classe DOMDocument costruisce un documento nodo per nodo utilizzando i metodi createElement e appendChild, quindi salva e scrive il file.
  • ๏ธ SimpleXML contro DOM: SimpleXML รจ veloce da leggere, mentre DOMDocument รจ adatto alla creazione precisa e alla manipolazione complessa.
  • ๐Ÿค– Assistenza AI: Gli strumenti di intelligenza artificiale possono generare codice di analisi sintattica per una specifica struttura XML e convertire tra XML, JSON e array PHP.

PHP e XML

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

Leggere XML utilizzando 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

Crea un documento XML utilizzando PHP

Apri il file movies_list.xml.

Crea un documento XML utilizzando PHP

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.

DOMANDE FREQUENTI

Entrambi memorizzano dati strutturati, ma XML utilizza tag e supporta attributi, commenti e schemi, mentre JSON รจ piรน leggero e si mappa direttamente su array e oggetti. JSON รจ comunemente usato per le API; XML รจ piรน adatto a documenti e configurazioni.

Carica il file con SimpleXML o DOMDocument, modifica i valori o gli attributi del nodo, quindi riscrivilo. Con SimpleXML, modifica la proprietร  e chiama asXML('file.xml'); con DOMDocument, modifica il nodo e chiama save().

XPath รจ un linguaggio di query per la selezione di nodi in un documento XML. In PHP, chiama $xml->xpath('//record/name') con SimpleXML, oppure usa la classe DOMXPath, per recuperare gli elementi corrispondenti senza cercarliping attraverso tutto l'albero.

Sรฌ. L'IA puรฒ generare codice utilizzando simplexml_load_string, json_encode e json_decode per convertire i formati e segnalare i dati che non vengono mappati correttamente, come attributi XML o contenuti misti. Verifica il risultato.

Sรฌ. Incolla un esempio del tuo XML e l'IA puรฒ generare codice SimpleXML o DOMDocument che legge esattamente gli elementi e gli attributi di cui hai bisogno, inclusi i cicli per i record ripetuti. Testalo con file reali.

Riassumi questo post con: