Doporučujeme: Zkracovač dlouhých adres | Služby pro Váš web | Stahovač videí z YouTube | Psí Park | Snadné sdílení souborů | Měření rychlosti internetu | Zkus to jinak - logicky

Můj blog – až 10 % špičkového kódu navíc!

Parsování XML? Zapomeňte na XSLT!

Datum: 11. 4. 2007 18.00 | Autor: Lukáš | 9576× | Kategorie: PHP | Komentáře: 12

Pokud chcete v PHP4 parsovat XML soubor, například RSS zdroj, musíte použít XSLT funkce (xslt_create, xslt_set_base, xslt_process), naučit se základy XSLT a s jejich pomocí si pak vytvořit soubor s XSLT šablonou, pomocí které pak z XML zdroje vytáhnete potřebná data.

Další možností je ještě použití XML funkcí, ty jsem však nezkoušel a s letmým pohledem na ukázkové kódy mi to opět připadá jako kanón na vrabce.

 

S příchodem PHP5 však přichází více možností, a jednou z nich je vynikající rozšíření SimpleXML (součást standardního balíku PHP), s jehož pomocí je parsování XML opravdu je pár řádků kódu.

Zápis ukážu na příkladu:

 1 <?php

 2
 3
/*  Zde načteme obsah XML souboru do proměnné; je možné použít i funkci simplexml_load_string, kterou lze načíst přímo XML data, která máme uložena v nějaké proměnné. V této chvíli se nám vytvoří objekt $xml, se kterým budeme dále pracovat. */
 4
$xml=simplexml_load_file("http://italo.cz/rss.php");
 5
 6
/* Teď je to opravdu primitivní. Jednoduchým příkazem $xml->NazevElementu vypíšeme potřebný obsah. Následující kód vypíše název kanálu, jeho popis a odkaz na web. */
 7
echo "<div id='ctecka'>
 8 <h1>
 9 <a href='"
.$xml->channel->link."' onclick='return!window.open(this.href);'>".$xml->channel->title." - ".$xml->channel->description."</a>
10 </h1>"
;
11
12
/* A protože je článků většinou v RSS zdroji víc, jednoduchým cyklem foreach získáme z $xml->channel->item veškerá data, a to opět ve formátu objektu. */
13
foreach ($xml->channel->item as $item){
14 echo 
"<div class='item'>
15 <h2>
16 <a href='"
.$item->link."' onclick='return!window.open(this.href);'>".$item->title."</a>
17 </h2>
18 "
.$item->description.$item->image."
19 </div>"
;
20 }
21
22 echo 
"</div>";
23
?>

A to je vše. Jediným omezením těchto funkcí je, že umí korektně pracovat pouze s daty v kódování utf-8, pro převod tedy případně použijte funkci iconv s modifikátorem //IGNORE (některé znaky v utf-8 totiž nemají svou obdobu ve windows-1250 — převod by pak skončil chybou).

Komentáře:

Přidat nový komentář:




Ochrana proti spamu. Napište prosím číslici pět: