PHP XML-tutorial: creƫren, parseren, lezen met voorbeeld
ā” Slimme samenvatting
PHP en XML werken samen om gegevens tussen systemen te structureren, op te slaan en uit te wisselen. Deze handleiding legt XML, de DOM en XML-parsers uit, laat zien hoe je een XML-document leest met SimpleXML en hoe je er een maakt met de DOMDocument-klasse, en sluit af met een uitleg over wanneer je welke methode moet gebruiken.

Wat is XML?
XML is de afkorting voor Extensible Markup Language.
XML wordt gebruikt om gegevens te structureren, op te slaan en van het ene systeem naar het andere te transporteren.
XML lijkt op HTML. Het maakt gebruik van openings- en sluitingslabels. In tegenstelling tot HTML kunnen gebruikers in XML hun eigen labels definiƫren.
Wat is DOM?
DOM is de afkorting voor Document Object Model.
Het is een platformonafhankelijke en taalneutrale standaard die definieert hoe gegevens in de volgende contexten kunnen worden benaderd en bewerkt:
- HTML
- XHTML
- XML
DOM XML wordt gebruikt om XML-documenten te openen en te manipuleren. Het bekijkt het XML-document als een boomstructuur.
XML-parsers
Een XML-parser is een programma dat een XML-document vertaalt naar een XML Document Object Model (DOM)-object.
Het XML DOM-object kan vervolgens worden gemanipuleerd met behulp van Javascript, Python, PHP en andere talen.
Het sleutelwoord CDATA, een acroniem voor (ongeparseerde) tekengegevens, wordt gebruikt om speciale tekens zoals "<" en ">" te negeren bij het parsen van een XML-document.
Waarom XML gebruiken?
- Webdiensten zoals SOAP en REST gebruiken het XML-formaat om informatie uit te wisselen. Kennis van XML en de werking ervan geeft je als ontwikkelaar een concurrentievoordeel, aangezien moderne applicaties veelvuldig gebruikmaken van webdiensten.
- XML-documenten kunnen worden gebruikt om de configuratie-instellingen van een applicatie op te slaan.
- Het stelt je in staat om je eigen aangepaste tags te creƫren, wat het flexibeler maakt.
XML-documentvoorbeeld
Laten we aannemen dat u aan het ontwikkelen bent.ping Een applicatie die gegevens in XML-formaat ophaalt van een webservice.
Hieronder ziet u een voorbeeld van hoe het XML-document eruitziet.
<?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>
HIER,
- ā " geeft de te gebruiken XML-versie en -codering aan.
- ā ' is het basiselement.
- ā ⦠ā zijn de onderliggende elementen, ƩƩn per werknemersdossier.
Hoe XML te lezen met PHP
Laten we nu de code schrijven die het XML-document met de werknemersgegevens leest en de resultaten in een webbrowser weergeeft. 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>'; } ?>
HIER,
- ā$xml = simplexml_load_file('employees.xml');ā gebruikt de functie simplexml_load_file om het bestand met de naam employees.xml te laden en de inhoud ervan toe te wijzen aan de variabele $xml.
- ā$list = $xml->record;ā haalt de inhoud van de recordknooppunten op.
- āfor ($i = 0; $i < count(ā¦)ā¦ā is de for-lus die de array leest en de resultaten uitvoert.
- ā$list[$i]->attributen()->man_no;ā leest het man_no attribuut van het element
- ā$lijst[$i]->naam;ā leest de waarde van het naam-kindelement
- ā$lijst[$i]->positie;ā leest de waarde van het onderliggende positie-element
De XML-lezer testen
Als je het bestand index.php in de map phptuts/xml hebt opgeslagen, ga dan naar de betreffende map. URL http://localhost/phptuts/xml/index.php
Hoe u een XML-document maakt met behulp van PHP
We zullen nu bekijken hoe u een XML-document kunt maken met behulp van PHP.
De volgende code gebruikt de ingebouwde PHP-klasse DOMDocument om een āāXML-document te maken.
<?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"; ?>
HIER,
- ā$dom = new DOMDocument();ā maakt een instantie van de DOMDocument-klasse aan.
- ā$dom->codering = 'utf-8';ā stelt de documentcodering in op utf-8
- ā$dom->xmlVersion = '1.0';ā specificeert het versienummer 1.0
- ā$dom->formatOutput = waar;ā zorgt ervoor dat de uitvoer goed is opgemaakt
- ā$root = $dom->createElement('Films');ā maakt het hoofdknooppunt met de naam Films
- ā$attr_movie_id = new DOMAttr('movie_id', '5467');ā definieert het attribuut movie_id van het filmknooppunt.
- ā$dom->createElement('ElementName', 'ElementValue')ā maakt een kindknooppunt aan. ElementName specificeert de naam van het element, bijvoorbeeld Titel. ElementValue stelt de waarde van het kindknooppunt in, bijvoorbeeld De Campagne.
- ā$root->appendChild($movie_node);ā voegt het filmknooppunt toe aan het hoofdknooppunt Movies.
- ā$dom->appendChild($root);ā voegt het hoofdknooppunt toe aan het XML-document.
- ā$dom->opslaan($xml_bestandsnaam);ā slaat het XML-bestand op in de hoofdmap van de webserver.
- āecho ā$xml_file_name has been successfully createdā;ā geeft een succesbericht weer.
Het testen van de XML Creator
Als je het bestand create_movies_list.php hebt opgeslagen in de map phptuts/xml, ga dan naar de betreffende map. URL http://localhost/phptuts/xml/create_movies_list.php
Open het bestand movies_list.xml.
SimpleXML versus DOMDocument
PHP biedt twee belangrijke manieren om met XML te werken. SimpleXML is het meest geschikt wanneer je voornamelijk gegevens hoeft te lezen, terwijl DOMDocument meer controle biedt voor het bouwen en grondig bewerken van documenten. De onderstaande tabel vergelijkt ze.
| Aspect | SimpleXML | DOMDocument |
|---|---|---|
| Gebruiksgemak | Heel eenvoudig; het document gedraagt āāzich als geneste objecten. | Een uitgebreidere, op knooppunten gebaseerde API |
| Best voor | Lezen en licht redigeren | Het creƫren van documenten en complexe manipulaties |
| Toegangsstijl | $xml->record->name | createElement() en appendChild() |
| XPath-ondersteuning | Ja, via ->xpath() | Ja, via de DOMXPath-klasse. |
Een praktische vuistregel is om SimpleXML als eerste te gebruiken voor het lezen van feeds en eenvoudige bestanden, en over te schakelen naar DOMDocument wanneer je documenten moet maken, knooppunten op specifieke posities moet invoegen of moet valideren aan de hand van een schema.



