Článek v rubrikách:
Jak zpracovávat XML dokument, SimpleXML, ale neumí kódování WINDOWS-1250
Zpracovávat XML dokument, procházet, číst a ukládat je dnes nutnost, bez toho se žádný programátor neobejde. Tento článek např. řeší použití knihovny SimpleXML a čtení RSS zdroje.
Pro čtení XML dokumentů často používám php rozšíření SimpleXML, je snadné na používání a v XML dokumentu se lze pohybovat podobně jako v poli hodnot.
Následuje příklad jak číst RSS zdroj. V případě, že chceme změnit výstupní kódování můžeme použít funkci iconv. Vstupní kódování je vždy UTF-8, protože SimpleXML vždy interně pracuje s kódováním UTF. Výstupní kódování je windows-1250, ale můžeme zvolit libovolně podle sebe v proměnné $oC.
- $iC = "UTF-8";
- $oC = "CP1250";
- $url = "http://www.webfaq.cz/rss-clanky.php";
- if (@$xml = simplexml_load_file($url)) {
- foreach ($xml->channel->item as $item) {
- $odkaz = iconv($iC, $oC, $item->link);
- $nazev = iconv($iC, $oC, $item->title);
- $popis = iconv($iC, $oC, $item->description);
- echo '<a href="'.$odkaz.'">'.$nazev.'</a>'."<br/>";
- echo $popis."<br/>";
- }
- }
SimpleXML má však i jednu nevýhodu, neumí pracovat s XML dokumenty se vstupním kódováním WINDOWS-1250. V takovém případě je lepší použít funkce DOM.
UPDATE: Při psaní tohoto článku jsem si ověřil platnost výroku, že SimpleXML neumí WINDOWS-1250. Výrok musím vzít zpět! Dle mých testů umí! Přesto, že jsem kdysi s tím měl problémy, opravdu to umí.
Zkusil jsem jednoduchý test, vytvořil jsem soubor napsáný ve windows-1250 kódování a do hlavičky vložil encoding windows-1250.
- <?xml version="1.0" encoding="windows-1250"?>
- <SHOP><SHOPITEM><PRODUCT>ěščřžýžřě+ěščřžýžřčšě+ěščřžýáíéíáýžřčšě+ ahoj lidi +ěščřžýáííáýžřčšě</PRODUCT></SHOPITEM></SHOP>
Pak jsem vytvořil testovací soubor, který XML dokument čte a vypisuje na obrazovku.
- <? $xml=simplexml_load_file($file); ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Untitled Document</title>
- </head>
- <body>
- <? foreach($xml as $k=>$v) echo $v->PRODUCT."<br/>"; ?>
- </body>
- </html>
Výsledek? Vypsáno na obrazovku:
- ěščřžýžřě+ěščřžýžřčšě+ěščřžýáíéíáýžřčšě+ ahoj lidi +ěščřžýáííáýžřčšě
podobné články
| 01.12.2008 | Cron a kdo vlastně spouští skript? Démon v pozadí nebo uživatel v prohlížeči? | (17%) |
| 27.06.2008 | XML-RPC přes CURL, aneb jak odeslat XML soubor vzdálené službě, když nemáme allow_url_fopen | (17%) |
| 19.06.2008 | XML a značkovací jazyky, historie a vznik | (17%) |
| 07.06.2008 | Jak zjistit S-Rank pomocí XML-RPC | (17%) |
komentáře
RSS Komentáře
Bohužel neznám podrobně quick.cart a jestli má nějaké možnosti importu a definice struktury cizích xml, ale pravděpodobně budete potřebovat vytvořit skript, který bude procházet daný xml soubor a získaná data bude vkládat do databáze. Třeba se tady někdo najde, kdo by měl chvíli času, v opačném případě doporučuji zadat zakázku na http://diskuse.jakpsatweb.cz



Dobrý den,zajímavý web.Jsem totální amatér,mám eshop,založený na Quick.cartu.Mám i dodavatele zboží.Poslal mi odkaz,adresu,na xml soubor.Ten i stáhnu do pc,ale teď vůbec nevím,jak ty data nacpat do eshopu.Můžete mi někdo poradit?Díky email:keramj@seznam.cz