Обменные курсы в 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.
