| Rubrika Php / mysql
Diskusia k článku
Parsovanie XML súboru v PHP
rajo
18. 09. 2009, 12:32
Ako na to, keď sa nedá použiť funkcia simplexml_load_file, čiže keď je zrejme vypnuté allow_url_fopen??? Prosím "aspoň" o nejakú nápovedu...
molly
04. 02. 2009, 01:03
info [a] mackousko.sk
Zdravim. Jedna sa o vypis v xml z webnovin. Je tam dajme tomu 10 clankov. Vsetko je v poriadku akurat problem je v tom ze vypise iba 1 clanok a neviem ako vypisat ostatne.
masko
04. 02. 2009, 00:11
masek [a] altamira.sk
a pomocou navodu spomenuteho v clanku to nejde? simple_xml_load_file v mnohyc pripadoch pomoze, pri zlozitych strukturach vsak obcas byva problem.
molly
03. 02. 2009, 20:33
info [a] mackousko.sk
Zdravim. Super clanok. Este by som sa rad informoval ci viete poradit ako spravit vypis ked mam taketo xml:
BRATISLAVA 3. februára (WEBNOVINY) - Slováci sa k elektroodpadu správajú ekologickejÅ¡ie, tvrdà marketingová manažérka Envidomu Jana Nahálková. Oproti roku 2006 sa za minulý rok zbavilo svojich spotrebiÄov ekologicky až o 15 percent viac Slovákov, za rok 2008 ich bolo asi 53 percent. Dávali ich najmä do organizovaného zberu v obci, do zberných dvorov, predajnà alebo im ich predajcovia odviezli. O Å¡esÅ¥ percent sa znÞil poÄet tých, ktorý starý elektrospotrebiÄ vyhadzujú do bežného odpadu. Neekologicky sa správa pätnásÅ¥ percent. Tiež menej ľudà svoje spotrebiÄe daruje, predá alebo použÃva Äalej. Vyplýva to z prieskumu, ktorý pre Envidom v novembri robili United Consultants a agentúra Focus na vzorke viac ako tisÃc Slovákov.
Každý druhý Slovák v minulom roku vyradil aspoň jedno elektrické zariadenie, každý Å¡tvrtý vyradil malý spotrebiÄ, ako je fén, rýchlovarná kanvica alebo mikrovlnka, lampa a mobilný telefón. Takmer polovica respondentov predpokladá, že tento rok vyradà aspoň jedno zariadenie, Å¡tvrtina si myslÃ, že dva a viac. Hlavným dôvodom je nahradiÅ¥ starý nefunkÄný prÃstroj. Napriek tomu, že bol starý funkÄný, nakupovali Slováci najmä mobilné telefóny, poÄÃtaÄe a elektrické sporáky. U mobilných telefónov je takmer sedem z desiatich pri vyradenà eÅ¡te funkÄných. Najmä staré hraÄky ľudia vyraÄujú a už nekupujú nové.
Slováci v minulom roku vyradili oproti roku 2006 podstatne viac malých spotrebiÄov a poÄÃtaÄov, ale oveľa menej práÄok. V tomto roku budú vyraÄovaÅ¥ najmä malé spotrebiÄe, mobilné telefóny a elektrické hraÄky, menej vÅ¡ak radiátorov, práÄok a sporákov. Ako tvrdà generálny riaditeľ Envidomu Martin Ciran, tieto vyhliadky sú pesimistické, dôvodom je finanÄná krÃza.
VÅ¡etky informácie o tom, ako správne naložiÅ¥ so starými Äi nefunkÄnými elektrospotrebiÄmi, sú na stránke www.envidom.sk.
SITA
VDAKA
Kejli
18. 12. 2008, 16:37
Díky za pěkný článek. Je to napsánou hezky srozumitelně. Pomohlo mi to.
naspäť
Pridať komentár
XML je dnes už relatívne rozšírená forma sprístupňovania dynamicky
generovaného obsahu pre externých partnerov. Každý väčší aj menší web
má napríklad svoje RSS, čo je tiež XML formátovaný súbor. Pomocou vhodne
vygenerovaného XML feedu dokážeme napríklad zobraziť spravodajstvo
tlačovej agentúry, najnovšie ponuky pracovného portálu či aktuálnu ponuku
autobazáru. Všetko samozrejme presne napasované do nášho dizajnu. Princíp
je jednoduchý – všetok takýto externý obsah sa naťahuje z dynamicky
generovaného XML súboru, ktorý je aktualizovaný zo strany poskytovateľa
služby.
Ako príklad si zoberme RSS feed tlačovej
agentúry SITA. Na stránke http://www.webnoviny.sk/…-Kanaly.html
nájdeme zoznam všetkých feedov, ktoré SITA ponúka, majú ich prehľadne
rozčlenené do mnohých kategórií.
Základom parsovania jednoduchých XML súborov, akými RSS feedy sú, je PHP
funkcia simplexml_load_file.
<? $request_url = "http://www.webnoviny.sk/rss/iwebnoviny7.rss"; // adresa xml súboru $xml = simplexml_load_file($request_url) or die("feed sa nepodarilo načítať"); ?>
Pokiaľ je všetko tak ako má byť, zdrojový súbor sa našiel a jeho
štruktúra je taká, že ju PHP načíta, k premennej $xml
môžeme pristupovať ako k objektu, v ktorom sú uložené jednotlivé vetvy
XML súboru. Pre lepšie pochopenie uvádzam časť výpisu premennej
prostredníctvom var_dump:
<? // var_dump($xml); object(SimpleXMLElement)#1 (2) { ["@attributes"]=> array(1) { ["version"]=> string(3) "2.0" } ["channel"]=> object(SimpleXMLElement)#2 (6) { ["title"]=> string(24) "Webnoviny.sk - Auto-moto" ["link"]=> string(24) "http://www.webnoviny.sk/" ["description"]=> string(26) "Spravodajský portál SITA" ["language"]=> string(2) "sk" ["docs"]=> string(31) "http://backend.userland.com/rss" ["item"]=> array(15) { [0]=> object(SimpleXMLElement)#3 (8) { ["title"]=> string(66) "Auto-moto: Ceny diaľničných známok pre autá sa nebudú meniť" ["link"]=> string(100) "http://www.webnoviny.sk/auto-moto/clanok/24012/Ceny-dialnicnych-znamok-pre-auta-sa-nebudu-menit.html" ["description"]=> string(397) "Ceny diaľničných známok pre motorové vozidlá do 3,5 tony sa nebudú v budúcom roku meniť. Ako vyplýva z nariadenia vlády, ktoré ministri na stredajšom rokovaní kabinetu schválili, dvojstopové motorové vozidlá alebo jazdné súpravy s celkovou hmotnosťou do 3,5 tona zaplatia za užívanie vymedzených úsekov diaľnic a ciest pre motorové vozidlá ročne 36,5 eur (1 099,6 Sk)." ["category"]=> string(9) "Auto-moto" ["author"]=> string(12) "Webnoviny.sk" ["comments"]=> string(100) "http://www.webnoviny.sk/auto-moto/clanok/24012/Ceny-dialnicnych-znamok-pre-auta-sa-nebudu-menit.html" ["enclosure"]=> object(SimpleXMLElement)#18 (1) { ["@attributes"]=> array(3) { ["url"]=> string(46) "http://www.webnoviny.sk/uploady/dialnica-9.jpg" ["lenght"]=> string(5) "30273" ["type"]=> string(10) "image/jpeg" } } ["pubDate"]=> string(31) "Wed, 29 Oct 2008 19:35:00 +0100" }
Pokiaľ by sme chceli získať výpis všetkých aktuálnych správ
uvedených v RSS feede, budeme iterovať cez pole
$xml->channel->item, ktoré v hierarchii XML feedu
predstavuje jednu novinku. K jednotlivým prvkom poľa potom pristupujeme tak,
ako vidno na príklade. Je dobré, či skôr nutné, nechať si vždy vypísať
štruktúru načítaného súboru prostredníctvom var_dump, aby
sme vedeli, k akým prvkom sa dá pristupovať.
foreach($xml->channel->item as $key) { echo $key->title .'<br />'; // vypíše titulok echo $key->link .'<br />'; // vypíše linku na celý článok echo $key->enclosure['url'] .'<br />'; // vypíše adresu obrázku k článku echo $key->description .'<br />'; // vypíše perex článku }
Parsovanie XMLka nie je nič náročné, pokiaľ je súbor korektne vygenerovaný a má správnu štruktúru. Vďaka feedom sa weby dajú obohatiť o množstvo aktualizovaných informácií z externých zdroj – pozor však aj na autorské práva!

