Avatar billede gnukki Nybegynder
26. juni 2006 - 15:34 Der er 13 kommentarer og
1 løsning

RSS og PHP

Hej,

Jeg har en ekstern xml-fil (http://www.odin.dk/112puls/odin112puls.xml). Indholdet fra denne skal jeg have sat ind i en php-fil. Jeg har set på flere php-parsere, men har ikke fået nogen til at virke.

Er der nogen der har / har kendskab til nogen løsninger, der virker?
Avatar billede iss Novice
26. juni 2006 - 15:36 #1
hansanderson.com/php/xml/ er nem at have med at gøre, dog skal man holde den fra de store XML filer.
Avatar billede gnukki Nybegynder
26. juni 2006 - 15:54 #2
Okay, jeg har fundet koden:
        $xml = xmlize($data); # where $data is the xml in the above section.

    $people = $xml["people"]["#"]["person"];

    for($i = 0; $i < sizeof($people); $i++) {

        $person = $people[$i];

        $age     = $person["@"]["age"];
        $name    = $person["#"]["name"][0]["#"];
        $job     = $person["#"]["job"][0]["#"];

        print "$name - $age - $job<br>\n";


    }

Der står at $data er xml, men skal jeg skrive stien for denne eller?
Avatar billede gnukki Nybegynder
26. juni 2006 - 16:00 #3
Det er ligeledes nødvendigt at inkludere enten xmlize.inc eller xmlize-php5.inc ikke?
Avatar billede iss Novice
26. juni 2006 - 16:06 #4
Nej, du henter din XML fil ind i en variabel ($data) og kører xmlize på den.

$handle = fopen("http://www.odin.dk/112puls/odin112puls.xml", "rb");
$data = '';
while (!feof($handle)) {
  $data .= fread($handle, 8192);
}
fclose($handle);

Ovenstående er fra PHP manualen. Og du skal enten havde include filen eller lagt koden i din fil.
Avatar billede gnukki Nybegynder
26. juni 2006 - 16:21 #5
Jeg har lavet om på koden så den passer til mit formål, men det virker ikke helt. Jeg får ingen fejlmeddelser, men en hvid skærm i stedet.
Jeg bruger følgende kode:

<?php

include("xmlize.inc");

$handle = fopen("http://www.odin.dk/112puls/odin112puls.xml", "rb");
$data = '';
while (!feof($handle)) {
  $data .= fread($handle, 8192);
}
fclose($handle);


$xml = xmlize($data); # where $data is the xml in the above section.

    $channel = $xml["channel"]["#"]["item"];

    for($i = 0; $i < sizeof($channel); $i++) {

        $item = $channel[$i];

        $title     = $item["@"]["title"];
        $description  = $item["#"]["description"][0]["#"];
        $comments     = $item["#"]["comments"][0]["#"];

        print "$title - $description - $comments<br>\n";


    }


?>
Avatar billede iss Novice
26. juni 2006 - 16:40 #6
Lav en :
echo "<pre>";
print_r($xml);
echo "</pre>";

Så kan det være du kan finde rundt i den, men som jeg lige kan se så har du startet med channel, du skal starter med rss som det står i filen.
Avatar billede gnukki Nybegynder
26. juni 2006 - 20:02 #7
Okay, tænkte det nok, men hvordan gør jeg lige det?
Avatar billede iss Novice
26. juni 2006 - 20:07 #8
Du skal bare følge den hele vejen så giver det noget med:
["rss"]["#"]["channel"]["#"]
Avatar billede gnukki Nybegynder
26. juni 2006 - 20:13 #9
Har rettet det et sted, men hvad med "$item = $channel[$i];"? Jeg går ud fra at der også skal noget med rss ind i det, men hvordan gør jeg det?

<?php

include("xmlize.inc");

$handle = fopen("http://www.odin.dk/112puls/odin112puls.xml", "rb");
$data = '';
while (!feof($handle)) {
  $data .= fread($handle, 8192);
}
fclose($handle);


$xml = xmlize($data); # where $data is the xml in the above section.

    $rss = $xml["rss"]["#"]["channel"]["#"]["item"];

    for($i = 0; $i < sizeof($rss); $i++) {

        $item = $channel[$i];

        $title     = $item["@"]["title"];
        $description  = $item["#"]["description"][0]["#"];
        $comments     = $item["#"]["comments"][0]["#"];

        print "$title - $description - $comments<br>\n";


    }

?>
Avatar billede iss Novice
26. juni 2006 - 20:42 #10
$handle = fopen("http://www.odin.dk/112puls/odin112puls.xml", "rb");
$data = '';
while (!feof($handle)) {
  $data .= fread($handle, 8192);
}
fclose($handle);


$xml = xmlize($data); # where $data is the xml in the above section.

    $item = $xml["rss"]["#"]["channel"][0]["#"]["item"];

    for($i = 0; $i < sizeof($item); $i++) {

        $entry = $item[$i];

        $title = $entry["#"]["title"][0]["#"];
        $description = $entry["#"]["description"][0]["#"];
        $comments = $entry["#"]["comments"][0]["#"];
        $pubDate = $entry["#"]["pubDate"][0]["#"];

        print "$title - $description - $comments<br>\n";


    }
Avatar billede gnukki Nybegynder
26. juni 2006 - 21:05 #11
Det virker nu, mange tak for hjælpen!!

Vil du smide et svar, så du kan få pointene :-)
Avatar billede iss Novice
26. juni 2006 - 21:07 #12
Nej, tak.
Avatar billede gnukki Nybegynder
26. juni 2006 - 21:11 #13
Okay, men endnu en gang mange tak for hjælpen.

Hav en god fortsættelse på din aften!
Avatar billede gnukki Nybegynder
26. juni 2006 - 21:11 #14
LUKKER
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