Avatar billede bandersen2200 Nybegynder
18. juli 2011 - 20:39 Der er 4 kommentarer og
1 løsning

Konvertere file_get_contents($url) til SimpleXMLElement

Hej jeg prøver at konvertere data fra følgende API : http://www.labs.skanetrafiken.se/v2.2/resultspage.asp?cmdaction=next&selPointFr=malm%F6%20C|80000|0&selPointTo=landskrona|82000|0&LastStart=2011-07-28%2016:38

Til et XML format hvor jeg kan hente værdierne ud for DepDateTime.
Problemet er at jeg ikke ved om konverteringen fungere korrekt. Efter konverteringen prøver jeg at læse følgende: $result[] =$xml->Journeys->Journey[0]->DepDateTime;
        print_r($result[0]);

Men modtager fejlen: Notice: Trying to get property of non-object in C:\xampp\htdocs\RejseplanenSverige\SimpleXMLSverige.php on line 26

Her er min samlede kode:
<?php

$url ='http://www.labs.skanetrafiken.se/v2.2/resultspage.asp?cmdaction=next&selPointFr=malm%F6%20C|80000|0&selPointTo=landskrona|82000|0&LastStart=2011-07-28%2016:38';

$result = file_get_contents($url);
if ($result === false) {
    print 'Error in class file_get_contents($url): $this->_xml Caught exception: ' . $url. "\n";
//    throw new Exception('An error occured while opening url: ' . $url);
}
else
{
    // Trim it down.
    $content = trim($result);
    echo "$content: ".$content;
    try {
        $xml = new SimpleXMLElement($content);
       
    } catch(Exception $e) {
        print 'Error in class: $this->_xml Caught exception: ' . $e->getMessage() . "\n";
        print "<pre>--SNIP--\n$content\n--/SNIP--</pre>";        }
       
        $result = array();
        $result[] =$xml->Journeys->Journey[0]->DepDateTime;
        print_r($result[0]);
}
?>

Håber i kan hjælpe.
Mvh Benjamin
Avatar billede bandersen2200 Nybegynder
18. juli 2011 - 20:59 #1
Her er opbygningen af XML filen som den er beskrevet af dem, der har lavet API interfacet: http://www.labs.skanetrafiken.se/v2.2/GetJourney.xsd
Avatar billede bandersen2200 Nybegynder
18. juli 2011 - 21:09 #3
Hej, det er fordi du skal fjerne '; i enden af linket når du tester den i browseren. Ved ikke hvorfor den ændre det når man sætter det ind på siden..
Avatar billede bandersen2200 Nybegynder
18. juli 2011 - 22:24 #4
Har fået det til at virke :)

<?php

$url ='http://www.labs.skanetrafiken.se/v2.2/resultspage.asp?cmdaction=next&selPointFr=malm%F6%20C|80000|0&selPointTo=landskrona|82000|0&LastStart=2011-07-28%2016:38';

$result = file_get_contents($url);
if ($result === false) {
    print 'Error in class file_get_contents($url): $this->_xml Caught exception: ' . $url. "\n";
//    throw new Exception('An error occured while opening url: ' . $url);
}
else
{
    // Trim it down.
    $content = trim($result);
    //echo "$content: ".$content;
    try {
        $xml = new SimpleXMLElement($content);
       
    } catch(Exception $e) {
        print 'Error in class: $this->_xml Caught exception: ' . $e->getMessage() . "\n";
        print "<pre>--SNIP--\n$content\n--/SNIP--</pre>";        }
       
        // Create new DomDocumetn object
$dom = new DOMDOcument();

// Load your XML as a string
$dom->loadXML($content);

$list = $dom->getElementsByTagName('Journey');
foreach($list as $detail) {   
    $node = $detail->firstChild;
    do {
        if($node->nodeName == 'DepDateTime') {
            foreach($detail->getElementsByTagName('DepDateTime') as $DepDateTime) {
                echo 'DepDateTime = ' . $DepDateTime->nodeValue . '<br>';
            }
        }
        $node = $node->nextSibling;
    } while($node != NULL);
    echo '====<br>';
    }
//echo $dom->saveXML();

}
?>
Avatar billede majbom Novice
20. juli 2011 - 08:11 #5
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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