Обменные курсы в C#
// Получить символы валюты. private void Form1_Load(object sender, EventArgs e) { string url = "http://finance.yahoo.com/webservice/" + "v1/symbols/allcurrencies/quote?format=xml"; try { // Загружаем данные. XmlDocument doc = new XmlDocument(); doc.Load(url); // Обработать узлы ресурсов. XmlNode root = doc.DocumentElement; string xquery = "descendant::resource[@classname='Quote']"; foreach (XmlNode node in root.SelectNodes(xquery)) { const string name_query = "descendant::field[@name='name']"; const string price_query = "descendant::field[@name='price']"; string name = node.SelectSingleNode(name_query).InnerText; string price = node.SelectSingleNode(price_query).InnerText; decimal inverse = 1m / decimal.Parse(price); ListViewItem item = lvwPrices.Items.Add(name); item.SubItems.Add(price); item.SubItems.Add(inverse.ToString("f6")); } // Сортировать. lvwPrices.Sorting = SortOrder.Ascending; lvwPrices.FullRowSelect = true; } catch (Exception ex) { MessageBox.Show(ex.Message, "Read Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
Этот код загружает XmlDocument из следующего URL-адреса.
http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=xml
Вы можете выполнить этот URL-адрес в своем браузере, чтобы увидеть, как выглядит результат. В следующем тексте показано, как выглядит запись, в которой хранятся курсы обмена валют.
USD/KRW 1169.650024 KRW=X 1480609630 currency 2016-12-01T16:27:10+0000 0
Далее код находит корневой узел документа и использует его метод SelectNodes, чтобы составить список узлов, имеющих тип тега resource и имеющих поле с именем classname со значением Цитата. Программа использует цикл while для итерации через результирующие узлы.
Внутри цикла код получает дочерние узлы Quote типа field с именем name и price , Он сохраняет свое текстовое содержимое в переменных name и price.
Я думаю, что названия курсов обмена валюты немного вводят в заблуждение. Например, USD / JPY - это обменный курс между долларами США и японской йеной. В настоящее время цена составляет 114,528, что означает, что один доллар США стоит 114,528 JPY. Но математически название USD / JPY означает «доллары за иену», а не «иена за доллар».
Чтобы сделать обмены немного легче читать, программа анализирует цену и инвертирует ее, чтобы вы могли видеть количество долларов за иен и количество йены за доллар.
Цикл отображает имя, цену и инвертированную цену в элементе ListView lvwPrices.