• In het kader van een nieuwe reeks Blogs die dieper op de materie van diverse programmeertalen ingaat, schreef ik het volgende artikel.


    Enkele weken terug heb ik een webservice geschreven welke HTTP requests met XML moest ontvangen van een, ook door mij gerealiseerde, Java applicatie. Deze webservice moet in de toekomst door meerdere applicaties worden geïmplementeerd. Om deze reden heb ik ervoor gekozen de te verwachten request en te verzenden responses te definiëren door middel van een XML schema.


    Een Java programmeur zal ervan op de hoogte zijn dat ondersteuning voor XML in Java met bijvoorbeeld JAXB prima en eenvoudig te realiseren is. Echter, omdat de webservice gerealiseerd moest worden in PHP heb ik gezocht naar de mogelijkheden van PHP omtrent XML. Meerdere libraries dienen zich op php.net aan.


    De eerste XML library die ik heb bekeken was SimpleXML. Het doel van deze library is het eenvoudig maken XML documenten te lezen en te schrijven in PHP. Dit brengt echter direct een nadeel met zich mee: De library is er niet in staat ingewikkelde acties uit te voeren op een XML bestand als de validate aan de hand van een XML schema. Hierdoor viel SimpleXML voor mij al snel af.


    Een andere library is XML Parser . Deze is echter niet object georiënteerd opgezet en heeft daarnaast niet de mogelijkheid om XML documenten te valideren, hierdoor viel de library al snel af.


    De derde library die ik heb bekeken was XMLReader. Deze library is wel in staat om een XML document te valideren met behulp van een XML schema. Echter, de manier waarop XMLReader een XML bestand parsed (met een pointer) was niet geschikt voor mijn situatie.


    Uiteindelijk ben ik beland bij de XML library DOM (Document Object Model). Deze library is verreweg de meest uitgebreide library die PHP biedt. De library is in staat om XML documenten te valideren aan de hand van een XML schema, en biedt een eenvoudige interface om XML documenten te lezen. Om deze redenen, en omdat DOM libraries ook in bijvoorbeeld Java beschikbaar zijn (op een soort gelijke manier) en ik daar al ervaring mee had, heb ik voor deze library gekozen.


    Opvallend aan alle libraries is dat ze gebruik maken van de onderliggende library libxml. Dit maakt het mogelijk voor alle libraries de errors op te vragen met de door libxml beschikbaar gestelde class en functies.


    Mocht je zelf XML documenten moeten schrijven of lezen met PHP raad ik aan om te beginnen met DOM. Mocht DOM niet voldoen omdat je bijvoorbeeld XPath nodig hebt, is het eenvoudig een DOM object om te zetten naar een SimpleXML object en andersom met de functies [func]dom_import_simplexml[/func] en [func]simplexml_import_dom[/func].


    De conclusie is in ieder geval eenvoudig: PHP is prima in staat om XML documenten te verwerken en te genereren!

  • Guest, wil je besparen op je domeinnamen? (ad)
  • De blog hierboven is de eerste blog op CriminalsPoint. Het is de bedoeling dat blogs regelmatig door de crewleden worden gepost. Het doel van de blogs is een inkijk geven in techniek die je nog niet kende, of een andere interessante post.


    Plaats in de reacties wat je er van vind! Alles is welkom. Wat vind je van het niveau? Was je op de hoogte van de genoemde mogelijkheden? Wat vind je van de blog?

  • Raad je DOM (rare naam, ik verwar het met javascript etc, heb van dat gedeelte geen verstand) ook aan voor puur en alleen het parsen van XML documenten?


    En voor het maken van XML documenten?


    Interessant iets. Enkel denk ik dat het niveau van CP te laag is voor dit, althans, voor een groot deel van CP.


    Zelf zou ik het fijn vinden als je ook code voorbeelden had laten zien van elke LIB.

  • Heb tijd geleden ook ermee gewerkt.
    Was een script dat data las uit xml bestanden ( zodat ik het niet onnodig hoef op te slaan in een database ) en er ook wijzigingen op kon aanbrengen.


    DOM was de enige die er nog iets mee kon.
    Weet wel dat het erg gevoelig kan liggen en je niet chagrijnig moet opkijken als je feel parse errors krijgen van XML kant :D


  • Het niveau ligt de laatste tijd niet erg hoog niet. Maar aan de ene kant zou het handig zijn als een goeie basis tut kwam voor php hier zodat niveau wat opgekrikt werd.

    PHP, JAVA, C#, JAVASCRIPT, HTML(5), CSS(3) developer.
    Vragen?! Stuur me gerust een prive bericht :) !

  • @BrokenTrack: De naam staat voor Document Object Model. In javascript heb je deze inderdaad ook, onder andere van de huidige pagina in de variabele window.document.


    Ik heb alleen XML bestanden moeten parsen en valideren, maar voor het maken zou ik inderdaad ook DOM gebruiken. De codevoorbeelden heb ik achterwegen gelaten omdat het een blog is en geen tutorial. Codevoorbeelden zijn daarmee ook prima te vinden achter de links (php.net).


    Yoichi: Met XML Schema's (XSD) kun je onverwachtse parse errors dus voorkomen. Bijzonder handig!

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!