• PHP Deel 15: XML

    7 January 2012 01:25 door
    XML staat voor Extensible Markup Language en het is een subset van SGML (Standard Generalized Markup Language). XML wordt op het internet gebruikt om gegevens op een gestructureerde wijze door te geven (RSS). Er zijn verschillende manieren om met XML te werken in PHP.



    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>
    In SimpleXML kunnen we voorgaand bestaan inlezen en verwerken met volgende code:
    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

    ?>
    15.1.1 XPATH
    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 );
    ?>
    Dit geeft als resultaat:
    Code:
    array(2) {
    	[0] => object(SimpleXMLElement)#4 (1) {
    		[0] => string(7) "Martijn"
    	}
    	[1]=> object(SimpleXMLElement)#5 (1) {
    		[0] => string(3) "PHP"
    	}
    }
    We krijgen dus alle elementen die voldoen op de locatie (book/title) zitten terug.
    Het pad is relatief aan het SimpleXML-element waarop je xpath() aanroept.

    Geschreven door: Martijn Croonen.
    Kleine aanpassingen door: Aerts Kurt.