Avatar billede d.kryger Praktikant
20. juli 2012 - 08:57 Der er 2 kommentarer og
1 løsning

Loade data fra XML-fil

Hej eksperter.

Jeg skal gerne loade noget data fra en xml-fil på min webside, men jeg kan ikke helt få det til at spille.

Min xml-fil ser sådan ud:
<?xml version="1.0"?>
<sager>
    <status>OK</status>
    <sag sagsnr="123A45678">
        <billeder>
            <billede>
                <id>1</id>
                <type />
                <sortering />
                <bredde>10</bredde>
                <hoejde>20</hoejde>
                <navn>1234.jpg</navn>
                <overskrift />
                <beskrivelse>Beskrivelse af billede 1</beskrivelse>
                <motiv />
                <undertype>1</undertype>
                <url>URL TIL BILLEDE 1</url>
            </billede>
            <billede>
                <id>2</id>
                <type />
                <sortering />
                <bredde>100</bredde>
                <hoejde>200</hoejde>
                <navn>5678.jpg</navn>
                <overskrift />
                <beskrivelse>Beskrivelse af billede 2</beskrivelse>
                <motiv />
                <undertype>2</undertype>
                <url>URL TIL BILLEDE 2</url>
            </billede>
        </billeder>
    </sag>
</sager>

Min PHP-koder ser sådan ud:
$doc = new DOMDocument();
$doc->load('xml.xml');

$sager = $doc->getElementsByTagName("sager");

foreach($sager as $sag)
{
    $status = $sag->getElementsByTagName("status");
    $status = $status->item(0)->nodeValue;
    print "Status: ".$status."<br>";

    $billeder = $sag->getElementsByTagName("sag");

    foreach($billeder as $billede)
    {
        $pics = $billede->getElementsByTagName( "billeder" );
        $pics = $pics->item(0)->nodeValue;
        print "Pics: ".$pics."<br>";
    }
}

Når jeg så loader siden så får jeg bare følgende:
Status: OK
Pics: 1 10 20 1234.jpg Beskrivelse af billede 1 1 URL TIL BILLEDE 1 2 100 200 5678.jpg Beskrivelse af billede 2 2 URL TIL BILLEDE 2

Jeg vil rigtig gerne have de enkelte værdier som i <billede> som variabler, men det kan jeg ikke lige helt gennemskue hvordan jeg gør...

Kan/vil nogen hjælpe?
Avatar billede DeeDawg Nybegynder
20. juli 2012 - 13:56 #1
Du kunne evt. benytte dig af SimpleXML istedet, hvilket vil spare dig for meget. Lad mig vise dig hvorfor:

<?php
$doc = simplexml_load_file('xml.xml');

foreach ($doc->sag as $sag) {
    echo 'Sagsnr: ' . $sag['sagsnr'] . '<br />';
   
    foreach ($sag->billeder->billede as $billede) {
        echo 'ID: ' . $billede->id . '<br />';
        echo 'Bredde: ' . $billede->bredde . '<br />';
        echo 'Hoejde: ' . $billede->hoejde . '<br />';
        echo 'Navn: ' . $billede->navn . '<br />';
        echo 'Beskrivelse: ' . $billede->beskrivelse . '<br />';
        echo 'Undertype: ' . $billede->undertype . '<br />';
        echo 'URL: ' . $billede->url . '<br />';
    }
}
?>

SimpleXML - Manual
Basic SimpleXML usage - Manual
Avatar billede d.kryger Praktikant
26. juli 2012 - 17:26 #2
Klasse! Læg lige et svar, så får du naturligvis de velfortjente point...
Avatar billede DeeDawg Nybegynder
01. august 2012 - 17:32 #3
Super. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester