PHP XML DOM

De ingebouwde DOM parser maakt het mogelijk om XML-documenten te verwerken in PHP.

Wat is DOM?

W3C DOM biedt een standaardset objecten voor HTML- en XML-documenten, evenals standaardinterfaces voor het benaderen en manipuleren van deze documenten.

W3C DOM wordt onderverdeeld in verschillende delen (Core, XML en HTML) en verschillende niveaus (DOM Level 1/2/3):

  • Core DOM - Definieert een standaardset objecten voor elke gestructureerde document
  • XML DOM - Definieert een standaardset objecten voor XML-documenten
  • HTML DOM - Definieert een standaardset objecten voor HTML-documenten

Als u meer wilt weten over XML DOM, bezoek dan onze XML DOM Handleiding.

XML parsing

Om XML-documenten te lezen en bij te werken - te maken en te verwerken - heb je een XML parser nodig.

Er zijn twee basissoorten XML parsers:

  • Boomgebaseerde parser:Deze parser convertteert het XML-document naar een boomstructuur. Het analyseert het hele document en biedt een API om elementen in de boom te benaderen, zoals het Document Object Model (DOM).
  • Gebeurtenisgebaseerde parser:Ziet het XML-document als een reeks van gebeurtenissen. Wanneer een specifieke gebeurtenis optreedt, roept de parser een functie aan om deze te verwerken.

DOM parser is een boomgebaseerde parser.

Zie onderstaande fragment van het XML-document:

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

XML DOM ziet XML als een boomstructuur:

  • Niveau 1: XML-document
  • Niveau 2: Root-element: <from>
  • Niveau 3: Tekstelement: "John"

Installatie

De DOM XML parser is een integraal onderdeel van PHP. Deze functies hoeven niet geïnstalleerd te worden om gebruikt te kunnen worden.

XML-bestand

We zullen in ons voorbeeld het volgende XML-bestand gebruiken:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Herinnering</heading>
<body>Vergeet het vergadering niet!</body>
</note>

Laden en weergeven van XML

We moeten de XML parser initialiseren, het XML laden en het weergeven:

Voorbeeld

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

De output van de bovenstaande code:

George John Herinnering Vergeet het vergadering niet!

Als je de broncode bekijkt in het browservenster, zie je onderstaande HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Herinnering</heading>
<body>Vergeet het vergadering niet!</body>
</note>

Het bovenstaande voorbeeld maakt een DOMDocument-object aan en laadt het XML uit "note.xml" in dit documentobject.

De saveXML() functie plaatst het interne XML-document in een string, zodat we het kunnen weergeven.

XML doorlopen

We moeten de XML parser initialiseren, de XML laden en door alle elementen van het <note>-element navigeren:

Voorbeeld

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

De output van de bovenstaande code:

#text = 
to = George
#text = 
from = John
#text = 
heading = Herinnering
#text = 
body = Vergeet het vergadering niet!
#text =

In het bovenstaande voorbeeld ziet u dat er lege tekstknopen tussen de elementen bestaan.

Wanneer XML wordt gegenereerd, bevat het meestal witruimte tussen de knopen. XML DOM parsers behandelen deze als gewone elementen, en als u hier niet op let, kan dit soms problemen veroorzaken.

Als u meer wilt weten over XML DOM, bezoek dan onze XML DOM Handleiding.