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 ,

  1. Andreas Eriksson’s avatar

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

    $xmldata =simplexml_load_string($data);

    Svara

  2. Micke’s avatar

    Schysst, jag får kolla på det.

    Svara

Reply to Andreas Eriksson Avbryt svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *

*

Switch to our mobile site

Page optimized by WP Minify WordPress Plugin