Pobieranie kursów walut z NBP w C#
NBP udostępnia dane dotyczące kursów walut poprzez pliki XML. Bieżące dane są dostępne pod tym adresem. Natomiast jeśli chcemy wyszukać kursy za konkretny dzień, to należy najpierw zaleźć odpowiednią ścieżkę do pliku XML.
Wyszukiwanie odpowiedniego XML
Pod adresem http://www.nbp.pl/kursy/xml/dir.txt są dostępne zakodowane nazwy plików XML. Struktura każdego wpisu jest następująca: [SYMBOL][DATA (w formacie yyMMdd)]z.
Tak więc aby wyszukać plik XML z kursami walut z tabeli A, za dany dzień roboczy, należy pobrać cały ten plik tekstowy np. przez WebClient i zastosować prostą regułę Regex o wzorcu: a\d{3}z. Mając nazwę pliku, można wtedy pobrać go za pomocą WebClient i sparsować.
Parsowanie XML
Za pomocą klasy XmlDocument możemy załadować pobraną zawartość pliku. Za pomocą konstrukcji XPATH wybrać węzły Pozycja i odczytać poszczególne elementy kursu waluty.
private void parseXml(XmlDocument xml)
{
XmlNode tableNode = xml.SelectSingleNode("/tabela_kursow/numer_tabeli");
XmlNode dtNode = xml.SelectSingleNode("/tabela_kursow/data_publikacji");
string tableName = tableNode.InnerText;
DateTime state = DateTime.Parse(dtNode.InnerText);
XmlNodeList xnList = xml.SelectNodes("/tabela_kursow/pozycja");
foreach (XmlNode xn in xnList)
{
...
}
}
Strona Internetowa
Potrzebujesz Å‚adnej strony internetowej? Zobacz demo na: tej stronie
Komentarze