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)
    {
       ...
    }
}


Podobne artykuły

Komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *