DOM XML PHP

Il parser DOM integrato rende possibile gestire documenti XML in PHP.

Cos'è DOM?

Il W3C DOM fornisce un set standard di oggetti per i documenti HTML e XML, nonché interfacce standard per accedere e operare su questi documenti.

Il W3C DOM è diviso in diverse parti (Core, XML e HTML) e diversi livelli (DOM Level 1/2/3):

  • Core DOM - Definisce un set standard di oggetti per qualsiasi documento strutturato
  • XML DOM - Definisce un set standard di oggetti per i documenti XML
  • HTML DOM - Definisce un set standard di oggetti per i documenti HTML

Se desideri imparare di più sull'XML DOM, visita il nostro Corso XML DOM.

Parsing XML

Per leggere e aggiornare - creare e gestire - un documento XML, è necessario un parser XML.

Ci sono due tipi di parser XML fondamentali:

  • Parser basato su albero: Questo tipo di parser converte il documento XML in una struttura ad albero. Analizza l'intero documento e fornisce un'API per accedere agli elementi delbero, come il Document Object Model (DOM).
  • Parser basato su eventi: Considera il documento XML come una serie di eventi. Quando si verifica un evento specifico, il parser chiama una funzione per gestirlo.

Il parser DOM è un parser basato su albero.

Vediamo un frammento di documento XML sottostante:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>John</from>

L'XML DOM vede l'XML come una struttura ad albero:

  • Livello 1: Documento XML
  • Livello 2: Radice: <from>
  • Livello 3: Elemento di testo: "John"

Installazione

Le funzioni del parser XML DOM sono parte integrante del core PHP. Non è necessario installare nulla per utilizzare queste funzioni.

File XML

Utilizzeremo il seguente file XML nel nostro esempio:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Promemoria</heading>
<body>Non dimenticare l'incontro!</body>
</note>

Caricamento e output XML

Dobbiamo inizializzare il parser XML, caricare l'XML e stamparlo:

Esempio

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>

L'output del codice sopra è:

George John Promemoria Non dimenticare l'incontro!

Se visualizzate il codice sorgente nella finestra del browser, vedrete il seguente HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Promemoria</heading>
<body>Non dimenticare l'incontro!</body>
</note>

Nell'esempio sopra, è stato creato un oggetto DOMDocument e l'XML di "note.xml" è stato caricato in questo oggetto documento.

La funzione saveXML() mette l'XML interno in una stringa, così possiamo stamparlo.

Ciclo XML

Dobbiamo inizializzare il parser XML, caricare l'XML e fare il ciclo di tutti gli elementi <note>:

Esempio

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
  {
  print $item->nodeName . " = " . $item->nodeValue . "<br />";
  }
?>

L'output del codice sopra è:

#text = 
to = George
#text = 
from = John
#text = 
heading = Promemoria
#text = 
body = Non dimenticare l'incontro!
#text =

Nell'esempio sopra, hai visto che ci sono nodi di testo vuoti tra ogni elemento.

Quando l'XML viene generato, di solito contiene spazi tra i nodi. Il parser XML li considera come elementi normali, e se non li presti attenzione, a volte possono sorgere problemi.

Se desideri imparare di più sull'XML DOM, visita il nostro Corso XML DOM.