Főoldal » WPF – Egyszerű RSS olvasó megvalósítása

WPF – Egyszerű RSS olvasó megvalósítása

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

Az RSS webes együttműködésre szolgáló XML állományformátumok családja, amely a felhasználókat megkíméli attól, hogy az egyes RSS-t használó weboldalakat meg kelljen látogatniuk, hogy megnézzék, hogy a tartalom frissült-e. Egy RSS-t használó weboldalon egy úgynevezett Feed-olvasóval ellenőrizhető az új tartalom, hogy a weboldalon találató-e friss cikk, vagy esetleg blogbejegyzés. Egy ilyen funkció elvégzésére képes egyszerű Feed-olvasó megvalósítását mutatja be ez a bejegyzés.

Az RSS-t a gyakran frissülő honlapok használják, a tartalom rövid összefoglalójának bemutatására. Ez a tartalom XML dokumentumként áll rendelkezésre, ezt RSS csatornának nevezzük. 

Első lépésként a Visual Studio-ban nyissunk egy üres WPF projektet. Majd alakítsuk ki a következő felhasználói felületet:


Name=”txtUrl” VerticalAlignment=”Top” />
Name=”cbTitle” VerticalAlignment=”Top” 
SelectionChanged=”cbTitle_SelectionChanged” />
Margin=”12,94,12,58″ VerticalScrollBarVisibility=”Visible” 
AcceptsReturn=”True”>

Az adatok lekérdezéséhez elengedhetetlen a csatorna elérhetőségének megadása. Az XML fájl letöltése után a számunkra fontos információkat (title, description és link mezők) kell belőle kigyűjteni. Az RSS olvasó funkciót a GetRss() függvény végzi el:

private String[,] getRssData(String channel)
{
     System.Net.WebRequest myRequest = System.Net.WebRequest.Create(channel);
     System.Net.WebResponse myResponse = myRequest.GetResponse();
     System.IO.Stream rssStream = myResponse.GetResponseStream();
     System.Xml.XmlDocument rssDoc = new System.Xml.XmlDocument();
     rssDoc.Load(rssStream);
     System.Xml.XmlNodeList rssItems = rssDoc.SelectNodes(“rss/channel/item”);
     String[,] tempRssData = new String[100, 3];
     for (int i = 0; i < rssItems.Count; i++)
     {
           System.Xml.XmlNode rssNode;
           rssNode = rssItems.Item(i).SelectSingleNode(“title”);
           if (rssNode != null)
           {
                tempRssData[i, 0] = rssNode.InnerText;
           }
           else
           {
                tempRssData[i, 0] = “”;
           }
           rssNode = rssItems.Item(i).SelectSingleNode(“description”);
           if (rssNode != null)
           {
                tempRssData[i, 1] = rssNode.InnerText;
           }
           else
           {
                tempRssData[i, 1] = “”;
           }
           rssNode = rssItems.Item(i).SelectSingleNode(“link”);
           if (rssNode != null)
           {
                tempRssData[i, 2] = rssNode.InnerText;
           }
           else
           {
                tempRssData[i, 2] = “”;
           }
     }
     return tempRssData;
}

A Refresh gombra történő kattintást követően a getRssData() függvény meghívása után az RSS Title értéke az rssData tömbből a ComboBox-ba kerülnek. A megfelelő működéshez a Refresh gomb eseménykezelőjére az alábbi kódot kell megírni:

private void btnRefresh_Click(object sender, RoutedEventArgs e)
{
     cbTitle.Items.Clear();
     rssData = getRssData(txtUrl.Text);
     for (int i = 0; i < rssData.GetLength(0); i++)
     {
          if (rssData[i, 0] != null)
          {
               cbTitle.Items.Add(rssData[i, 0]);
          }
          cbTitle.SelectedIndex = 0;
     }
}

Abban az esetben, ha a felhasználó a ComboBox-ból egy elemet kiválaszt, akkor annak az elemnek a description része az alul található többsoros TextBox-ba kerül. Ezt a funkciót a ComboBox SelectionChanged eseményében megírt kód végzi el.

private void cbTitle_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
     if (rssData[cbTitle.SelectedIndex, 1] != null)
     txtDescription.Text = rssData[cbTitle.SelectedIndex, 1];
}

A teszteléshez használjuk például az origo.hu Nagyvilág rovatának hírcsatornáját: 
http://www.origo.hu/contentpartner/rss/nagyvilag/origo.xml

A többi rovat elérhetősége itt található:
(http://www.origo.hu/techbazis/20050602iratkozzon.html)

Írta: Sallai Máté

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

HOZZÁSZÓLÁS

Ha nem hagy nyugodni az, amit a cikkben olvastál, akkor nyugodtan írd meg kérdésed vagy észrevételed kommentbe. Így szerzőnk könnyen tud neked válaszolni.

Vélemény, hozzászólás?