Köpönyeg.hu időjárás jelentő alkalmazása

Köpönyeg.hu időjárás jelentő alkalmazása
2013-06-23T20:00:15+02:00
2013-07-24T19:39:24+02:00
2022-11-29T11:10:35+01:00
Pacee
Sziasztok!

A múltkori MSN-es időjárásjelentő api-val kapcsolatos kérdésem után, most egy másik szolgáltatót, a köpönyeg.hu-t is szeretném kipróbálni. Jelenleg viszont elakadtam ott, hogy ha megnyitom a
http://koponyeg.hu/idojaras_rss.php?regios=6
oldalt, akkor szépen kiírja az összes információt. Ellenben, amikor PHP-ban betöltöm ezt a tartalmat, majd kiíratom, akkor csak a következő adatok jelennek meg:
SimpleXMLElement Object ( [@attributes] => Array ( [version] => 2.0 ) [channel] => SimpleXMLElement Object ( [title] => SimpleXMLElement Object ( ) [image] => SimpleXMLElement Object ( => http://koponyeg.hu/web/frontend/images/rss/koponyeg_logo_rss.gif [title] => SimpleXMLElement Object ( ) [link] => Budapest időjárás [width] => 144 [height] => 30 ) [link] => Siófok időjárás [description] => SimpleXMLElement Object ( ) [language] => hu [pubDate] => Sun, 23 Jun 2013 19:30:00 +0200 [lastBuildDate] => Sun, 23 Jun 2013 19:32:32 +0200 [copyright] => SimpleXMLElement Object ( ) [webMaster] => info@koponyeg.hu (kĂśpĂśnyeg.hu) [ttl] => 30 [docs] => Add-onok, RSS [item] => SimpleXMLElement Object ( [title] => SimpleXMLElement Object ( ) [pubDate] => Sun, 23 Jun 2013 19:30:00 +0200 [description] => SimpleXMLElement Object ( ) [guid] => 6_2013_06_23_19_30_00 ) ) )


Az általam használt kód:

$url='http://koponyeg.hu/idojaras_rss.php?regios=6'; $dataInISO=@file_get_contents($url); $xml = simplexml_load_string($dataInISO); print_r ($xml);

(A köpönyeg.hu-n van leírás arra, hogy, hogy hogyan kell használni, de az nettó használhatatlan, mivel a szükséges PHP osztály letöltési linkje hibás! + A beillesztési példa utáni eredmény ablakban azt írja, hogy nincs xsl modul telepítve....)

Segítségeteket előre is köszönöm!
Mutasd a teljes hozzászólást!
Privátban kaptam a megoldást, íme:

A kettőspontot nem szereti a simplexml, ezért előtte át kell alakítani a neveket az xml-ben.



$url='http://koponyeg.hu/idojaras_rss.php?regios=6';
$dataInISO=@file_get_contents($url);

// ez átalakítja a kettőspontos tag nevekben a kettőspontot aláhúzássá:

$dataInISO = preg_replace('~(</?|\s)([a-z0-9_]+):~is', '$1$2_', $dataInISO);

// így már elboldogul a simplexml is vele:

$xml = simplexml_load_string($dataInISO);

// var_dump($xml);

// pl.: alapértelmezett mértékegységek, eredeti xmlben koponyeg:mertekegysegek szerepel, de a fenti változtatás miatt koponyeg_mertekegysegek-et kell írni:
var_dump( (string) $xml->channel->koponyeg_mertekegysegek->attributes()->homerseklet );

// a régió neve
var_dump( (string) $xml->channel->item->title );

// jelenlegi hőmérséklet, ez is kettőspontos volt

var_dump( (string)$xml->channel->item->koponyeg_jelenido->attributes()->homerseklet);

A 10 pontot éppen ezért kérem töröljék az illetékesek a nevem mellől.
Mutasd a teljes hozzászólást!

  • Amit te elérsz, az egy RSS csatorna, nem pedig adatforrás. Az RSS olvasók szépen megjelenítik az adatokat, de te csak a sima forrással nem sokra mész.

    Amit a forrásban láttam: RSS olvasó nélkül is elérhető tartalom a <koponyeg:jelenido> </koponyeg:jelenido> tag-ek között. Ezt SimpleXML-be be tudod tölteni. StrPos és SubString függvények a barátaid a SimpleXML használata előtt.
    Mutasd a teljes hozzászólást!
  • RSS feldolgozásra én pár éve ezt az osztályt használtam: Magpie RSS - PHP RSS Parser

    talán érdemes lenne ránézni. nekem egyszerűnek tűnt, de nem tudom, hogy mennyire foglalkoztak vele, frissítették-e...
    guglizz rá még "RSS parser PHP" témakörben.
    Mutasd a teljes hozzászólást!
  • Privátban kaptam a megoldást, íme:

    A kettőspontot nem szereti a simplexml, ezért előtte át kell alakítani a neveket az xml-ben.



    $url='http://koponyeg.hu/idojaras_rss.php?regios=6';
    $dataInISO=@file_get_contents($url);

    // ez átalakítja a kettőspontos tag nevekben a kettőspontot aláhúzássá:

    $dataInISO = preg_replace('~(</?|\s)([a-z0-9_]+):~is', '$1$2_', $dataInISO);

    // így már elboldogul a simplexml is vele:

    $xml = simplexml_load_string($dataInISO);

    // var_dump($xml);

    // pl.: alapértelmezett mértékegységek, eredeti xmlben koponyeg:mertekegysegek szerepel, de a fenti változtatás miatt koponyeg_mertekegysegek-et kell írni:
    var_dump( (string) $xml->channel->koponyeg_mertekegysegek->attributes()->homerseklet );

    // a régió neve
    var_dump( (string) $xml->channel->item->title );

    // jelenlegi hőmérséklet, ez is kettőspontos volt

    var_dump( (string)$xml->channel->item->koponyeg_jelenido->attributes()->homerseklet);

    A 10 pontot éppen ezért kérem töröljék az illetékesek a nevem mellől.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd