Ondřej Brichta 25.7.2005
Většina zpravodajských serverů dnes nabízí v xml formátu výpis aktuálních článků. Z předchozích dílů již umíme pracovat z XMl dokumenty, proč tedy nevyužít tyto znalosti a nevytvořit si vlastní čtečku těchto kanálů.
Nástroje, pro čtení RSS kanálů dnes najdeme téměř všude. Některé jsou dokonce i placené, ale my si dnes ukážeme, že i ve Flashi můžeme vytvořit plnohodnotnou RSS čtečku velice snadno, především díky tomu, že pro XML dokumenty RSS kanálů platí jasná pravidla, která přesně definují strukturu a význam jednotlivých elementů XML dokumentu.
Dnes si vytvoříme velmi jednoduchý nástroj, který zpracuje několik základních elementů XML dokumentu. Víme, že v XML dokumentu je článek ohraničen elementem „item“, který obsahuje několik dalších subelementů, ze kterých nás dnes bude zajímat: „title“ – název článku, „description“ – stručný obsah článku a „link“ – odkaz na článek.
Vytvoříme si funkci, která načte z dané adresy xml soubor. Po načtení se musíme dostat „skrz“ první dva elementy „rss“ a „channel“. Všechny elementy, které obsahují potřebná data načteme do pole „nodeArray“.
Abychom vybrali elementy pojmenované „item“ projdeme celé pole a pokud najdeme příslušný element, zjistíme z tagů „title“, „description“ a „link“ potřebné údaje, které vložíme do polí „clanekNazev“, „clanekSouhrn“, „clanekUrl“ a do budoucího seznamu všech článků, který bude uložen v komponentě, pojmenované „seznam“.
Do prvního snímku vložíme následující kód:
System.useCodepage = true;
rssData = new XML();
rssData.ignoreWhite = true;
rssLoad = function (url) {
rssData.load(url);
//načtení dat
rssData.onLoad = function() {
//vložení elementů do pole
nodeArray = rssData.firstChild.firstChild.childNodes;
clanekNazev = new Array();
clanekSouhrn = new Array();
clanekUrl = new Array();
xx = 0;
dx = 0;
//projdeme pole
do {
nodeNm = nodeArray[xx].nodeName;
if (nodeNm == "item") {
itemArray = nodeArray[xx].childNodes;
x = 0;
do {
//z elementu item získáme potřebná data
if (itemArray[x].nodeName == "title") {
clanekNazev.push(itemArray[x].firstChild.nodeValue);
// vložíme do komponenty „seznam“ názvy článků seznam.addItem(itemArray[x].firstChild.nodeValue, [dx]);
dx++;
} else if (itemArray[x].nodeName == "description") {
clanekSouhrn.push(itemArray[x].firstChild.nodeValue);
} else if (itemArray[x].nodeName == "link") {
clanekUrl.push(itemArray[x].firstChild.nodeValue);
}
x++;
} while (x<itemArray.length);
}
xx++;
} while (xx<nodeArray.length);
};
};
Máme připravenou funkci, které budeme předávat proměnnou url, díky které funkce načte XML dokument ze serveru.
Na scénu vložíme textové pole, které bude typu „input“, tedy pole pro zadávání url adresy. Pole pojmenujeme „rssurl“.

Dále si vytvoříme libovolné tlačítko, které umístíme vedle vstupního textového pole. Tlačítku přiřadíme následující akci:
on (release) {
rssLoad(rssurl.text);
}
Po kliknutí se provede funkce, která načte data z určené adresy.
Aby se data zobrazila, musíme na scénu vložit dvě komponenty. Seznam komponent najdeme pod menu „Windows – Development Panels – Components“. Ze seznamu na scénu přetáhneme komponentu s názvem „List“. Komponentu zvětšíme na celou šířku scény a na panelu vlastností ji pojmenujeme „seznam“.

Na panelu akcí přiřadíme komponentě tento skript:
on (change) {
datas = this.selectedItem;
cislo = datas.data;
this._parent.vyber.text = this._parent.clanekNazev[cislo]+newline+newline+this._parent.clanekSouhrn[cislo];
}
Ten vloží do další textové komponenty název a popis článku. Přitom si zapamatujeme číslo článku, pod kterým je veden v pomocných polích. Toto číslo využijeme pro získání odkazu na originální článek.
Pro zobrazení názvu a popisu článku použijeme komponentu „TextArea“. Vložíme ji na scénu a pojmenujeme ji „vyber“.

Pokud budeme chtít zobrazit originální článek, vložíme na scénu tlačítko, kterému přiřadíme tento skript:
on (release) {
getURL(clanekUrl[seznam.cislo], "_blank");
}
Po kliknutí na tlačítko se zobrazí požadovaný článek.
Vytvořili jsme si velmi jednoduchou čtečku libovolného rss kanálu. Pokud ji ovšem umístíme na web, nebude díky bezpečnostním opatřením načítat externí dokumenty. V příštím díle si s tímto problémem snadno poradíme a dále si čtečku doplníme o několik funkcí, které nám umožní lépe zobrazit veškerá data, která nám formát zdrojového souboru poskytuje.
Zdrojový soubor dnešní ukázka si můžete stáhnout zde, ukázka.