Tegenwoordig maken bijna alle complexe websites in meer of mindere maten gebruik van XML. Denk hierbij bijvoorbeeld aan het inladen van rss-feeds van nieuwssites (rss is immers een vorm van XML) of het ophalen van realtime file informatie. Ook kan het erg nuttig zijn om zelf XML bestanden aan te bieden. Een voorbeeld hiervan is dat je andere webmasters de mogelijkheid wilt geven om een overzicht op te vragen van uw huidige gebruikers.
In de beginjaren van XML (omstreeks 1998) had PHP nog geen ondersteuning voor het generen van XML documenten. De enige oplossing was om zelf je eigen XML documenten letter voor letter zelf op te bouwen. Een extreem simpel voorbeeldje hiervan staat hieronder.
In principe is deze manier niet fout en de meeste browsers zullen de output van dit bestand dan ook gewoon goedkeuren. Echter is deze manier van programmeren achterhaald en enorm foutgevoelig. Eén enkele typefout of verkeerd tekentje (denk aan de ‘en “) zal al roet in het eten gooien. Ook zal de output van dit bestand niet fatsoenlijk zijn opgemaakt (alles in 1 lange regel achter elkaar).
Met de komst van de DOM functies is er een krachtige ondersteuning gekomen voor het maken van XML bestanden. Het voordeel van deze methode is dat deze veel minder fout gevoelig is, nette output levert en ook na lange tijd nog steeds makkelijk aan te passen is.
Hieronder heb ik een voorbeeldje gemaakt die hetzelfde oplevert als het vorige voorbeeld. Al lijkt de onderstaande oplossingmisschien wat meer programmeerwerk, toch is deze manier absoluut aan te raden omdat dit veel netter en minder foutgevoelig is!
//De array (komt normaal meestal uit een (MySQL Database)
//We maken een instantie aan van het DOM Document
$oXML = new DOMDocument();
//We kunnen aangeven dat we de output mooi ingesprongen willen hebben
$oXML->formatOutput = true;
//Het hoofdelement (users) aanmaken
$oUsers= $oXML->createElement('users');
//En het hoofdelement aan de XML koppelen
$oXML->appendChild($oUsers);
foreach($aUsersas $iID=>$aUser) {
//Nu maken we een user aan
$oUser= $oXML->createElement('user');
$oUsers->appendChild($oUser);
//Maken een childnode aan voor de voornaam
$oFirstname= $oXML->createElement('firstname', $aUser['firstname']);
$oUser->appendChild($oFirstname);
//En één voor de achternaam
$oLastname= $oXML->createElement('lastname', $aUser['lastname']);
$oUser->appendChild($oLastname);
//Vervolgens maken we een attribuut aan voor het id
$oAttribute= $oXML->createAttribute('id');
$oUser->appendChild($oAttribute);
//En vullen het zojuist aangemaakte attribuut met het id
$oIDText= $oXML->createTextNode($iID);
$oAttribute->appendChild($oIDText);
}
//Vervolgs alleen nog de goede header en output versturen en je bent klaar
header('content-type: text/xml');
echo $oXML->saveXML();
Voor meer informatie verwijs ik je graag naar het internet. Een goed uitgangspunt is http://nl.php.net/dom. Echter zijn er via Google nog veel meer voorbeelden te vinden. Later meer tips!
"Vele jaren met twijfels bij een andere provider, maar te bang (gemaakt) om te verhuizen. Flaxe kwam mij op veel gebieden..." Ronald Grahmbeek, Moerstaal.nl