Läsa XML med PHP

Det tog av någon anledning lång tid för mig att fatta att PHP har utmärkta inbyggda funktioner för att läsa XML. Så här gör man:

Först måste vi ha nått att parsa, så vi hämtar väderleksrapporten för Södertälje hos Yahoos väderapi:

$data = file_get_contents('http://weather.yahooapis.com/forecastrss?p=SWXX0026&u=c');

När XMLen nu ligger i variabeln $data fixar vi en parser och ber den lägga informationen i en array:

$parser = xml_parser_create_ns();
xml_parse_into_struct( $parser, $data, $values );

Detta lägger informationen som finns i varaibeln $data i arrayen $values. Nu kan vi komma åt värdena genom vanliga indexeringsnotation, i det här fallet hämtar vi temperaturen:

print_r( $values[48][attributes][TEMP] );

Slutligen stänger vi parsern:

xml_parser_free( $parser  );

Hela koden ser ut så här:

<?php
$data = file_get_contents('http://weather.yahooapis.com/forecastrss?p=SWXX0026&u=c');
$parser = xml_parser_create_ns();
xml_parse_into_struct( $parser, $data, $values );
print_r( $values[48][attributes][TEMP] );
xml_parser_free( $parser  );
?>

Ett hett tips är att använda print_r() på hela arrayen, på så vis kan man lätt få reda på vilken information som finns och vilka indexeringsnycklar som kan komma åt informationen:

print_r( $values );

Läs även andra bloggar om ,

3 comments on this post.
  1. Micke Nordin (micke) 's status on Sunday, 26-Jul-09 09:48:42 UTC - Identi.ca:

    […] Så här läser man XML i PHP: http://mickenordin.se/blog/index.php/2009/07/lasa-xml-med-php/ […]

  2. Andreas Eriksson:

    Bra post.
    Jag brukar själv använda mig av simplexml, tycker den fungerar kanon.

    $xmldata =simplexml_load_string($data);

  3. Micke:

    Schysst, jag får kolla på det.

Leave a comment





*