PHP XML DOM-parser
De ingebouwde DOM-parser maakt het mogelijk om XML-documenten in PHP te verwerken.
De XML DOM-parser
De DOM-parser is een op bomen gebaseerde parser.
Bekijk de volgende XML-documentfractie:
<?xml version="1.0" encoding="UTF-8"?>
<from>Jani</from>
De DOM ziet de XML hierboven als een boomstructuur:
- Niveau 1: XML-document
- Niveau 2: Basiselement: <van>
- Niveau 3: Tekstelement: "Jani"
Installatie
De DOM-parserfuncties maken deel uit van de PHP-kern. Er is geen installatie nodig om deze functies te gebruiken.
Het XML-bestand
Het onderstaande XML-bestand ("note.xml") wordt in ons voorbeeld gebruikt:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML laden en uitvoeren
We willen de XML-parser initialiseren, de xml laden en deze uitvoeren:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>
De uitvoer van de bovenstaande code zal zijn:
Tove Jani Reminder Don't forget me this weekend!
Als u "Bron weergeven" selecteert in het browservenster, ziet u de volgende HTML:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Het bovenstaande voorbeeld maakt een DOMDocument-Object aan en laadt de XML van "note.xml" erin.
Vervolgens plaatst de functie saveXML() het interne XML-document in een string, zodat we het kunnen uitvoeren.
Door XML bladeren
We willen de XML-parser initialiseren, de XML laden en alle elementen van het <note>-element doorlopen:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item) {
print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>
De uitvoer van de bovenstaande code zal zijn:
#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =
In het bovenstaande voorbeeld zie je dat er tussen elk element lege tekstknooppunten zijn.
Wanneer XML wordt gegenereerd, bevat het vaak spaties tussen de knooppunten. De XML DOM-parser behandelt deze als gewone elementen, en als je ze niet kent, veroorzaken ze soms problemen.
Als je meer wilt weten over de XML DOM, bezoek dan onze XML-tutorial .