15.1 SimpleXML
SimpleXML is een library in PHP waarmee we XML kunnen bewerken, SimpleXML is echter vrij beperkt, er bestaat ook een meer uitgebreide variant ‘DOMdocument’ , beide zijn compatible met elkaar.
In dit hoofdstuk gebruiken we volgend XML document (bib.xml):
Code:
<?xml version="1.0" ?> <bib> <boek isbn="5645640"> <titel>Martijn</titel> <verkocht>125</verkocht> </boek> <boek isbn="8484554"> <titel>PHP</titel> <verkocht>3225</verkocht> </boek> </bib>
PHP-code:
<?php
# We lezen het bestand in, als dat mislukt geeft de functie FALSE terug.
$bib = simplexml_load_file('./bib.xml');
# Controleren of het laden gelukt is
if(!$bib)
die('Het XML bestand is niet geladen');
# Nu kunnen we het bestand bekijken, we loopen door alle elementen en drukken ze af.
foreach ($bib->boek as $boek)
{
echo $boek['titel'] . "\n";
echo $boek['verkocht'];
}
?>
We kunnen ook elementen toevoegen aan een SimpeleXML object:
PHP-code:
<?php
# We lezen het bestand in, als dat mislukt geeft de functie FALSE terug.
$bib = simplexml_load_file('./bib.xml');
# Controleren of het laden gelukt is
if(!$bib)
die('Het XML bestand is niet geladen');
# Nu kunnen we een boek aan ons XML bestand toevoegen
$nieuweBoek = $bib->addChild('boek');
$nieuweBoek->addAttribute('isbn', '54565456');
$nieuweBoek->addChild('titel', 'Nieuwe boek');
$nieuweBoek->addChild('verkocht', '0');
echo $bib->asXML(); // Nu hebben we een nieuw boek toegevoegd
?>
Met XPATH kunnen we onderdelen in een XML-structuur benaderen zoals we bestanden en mappen benaderen op een computer, we scheiden alle onderdelen met een slash:
PHP-code:
<?php
//We lezen het bestand in, als dat mislukt geeft de functie FALSE terug.
$bib = simplexml_load_file( './bib.xml' );
//Controleren of het laden gelukt is
if ( !$bib ) {
die( 'Het XML bestand is niet geladen' );
}
//We willen graag alle titels opvragen
$resultaat = $bib->xpath( 'boek/titel' );
var_dump( $resultaat );
?>
Code:
array(2) { [0] => object(SimpleXMLElement)#4 (1) { [0] => string(7) "Martijn" } [1]=> object(SimpleXMLElement)#5 (1) { [0] => string(3) "PHP" } }
Het pad is relatief aan het SimpleXML-element waarop je xpath() aanroept.
Geschreven door: Martijn Croonen.
Kleine aanpassingen door: Aerts Kurt.