Ovo je klasa za parsiranje tabele. Trebaš da referenciraš
HtmlAgilityPack
Code:
public class KursnaListaFetcher
{
public KursnaLista DohvatiListu(string url)
{
using (var webClient = new WebClient())
{
webClient.Encoding = Encoding.UTF8;
string html = webClient.DownloadString(url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
string xpath = "//tbody[@id='index:srednjiKursLista:tbody_element']//tr";
var rows = htmlDocument.DocumentNode.SelectNodes(xpath);
if (rows != null)
{
var kursnaLista = new KursnaLista
{
Valute = new List<Valuta>(rows.Count)
};
var cultureInfo = new CultureInfo("sr-Latn-CS");
foreach (var row in rows)
{
kursnaLista.Valute.Add(new Valuta
{
SifraValute = row.ChildNodes[0].InnerText,
NazivZemlje = HttpUtility.HtmlDecode(row.ChildNodes[1].InnerText),
OznakaValute = row.ChildNodes[2].InnerText,
VaziZa = int.Parse(row.ChildNodes[3].InnerText),
SrednjiKurs = float.Parse(row.ChildNodes[4].InnerText, cultureInfo)
});
}
return kursnaLista;
}
}
return null;
}
}
public class KursnaLista
{
public int Broj { get; set; }
public DateTime FormiranaNaDan { get; set; }
public List<Valuta> Valute { get; set; }
}
public class Valuta
{
public string SifraValute { get; set; }
public string NazivZemlje { get; set; }
public string OznakaValute { get; set; }
public int VaziZa { get; set; }
public float SrednjiKurs { get; set; }
}
Pozivanje iz aplikacije:
Code:
private static void Main()
{
var fetcher = new KursnaListaFetcher();
var kursnaLista = fetcher.DohvatiListu("http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat");
if (kursnaLista != null && kursnaLista.Valute != null)
{
var eur = kursnaLista.Valute.FirstOrDefault(x => x.OznakaValute == "EUR");
Console.WriteLine("Sifra: " + eur.SifraValute);
Console.WriteLine("Naziv zemlje: " + eur.NazivZemlje);
Console.WriteLine("Oznaka valute: " + eur.OznakaValute);
Console.WriteLine("Vazi za: " + eur.VaziZa);
Console.WriteLine("Srednji kurs: " + eur.SrednjiKurs);
}
}
Bilo bi dobro ako možeš da izmeniš fetcher tako da vraća broj liste i datum formiranja, pa da ovaj kod posluži još nekom ;)