.NET 4.x Парсинг данных с использованием инъекций - C#
Формулировка задачи:
Всем привет!
В учебных целях мне поставлена задача: по нажатию кнопки в оконном приложении, оно должно зайти на сайт ЦБР и обновить данные о ценах на драгоценные металлы.
Ссылка на страничку: http://cbr.ru/hd_base/?PrtId=metall_base_new
На данной страничке необходимо произвести инъекцию input'а начальной (02.07.2008) и конечной (текущий день, на момент обновления) даты, а затем полученные данные загрузить в локальную базу данных.
Пожалуйста, скиньте какие-нибудь мануалы (желательно с примерами) по данной теме. Заранее благодарен за помощь!
Решение задачи: «.NET 4.x Парсинг данных с использованием инъекций»
textual
Листинг программы
using System;
using System.IO;
using System.Net;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace GetPreciousMetals
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Пример получения динамики котировок драгоценных металлов:");
using (StreamWriter sw = new StreamWriter(@"C:\root.xml"))
sw.WriteLine(getXMLFile("http://cbr.ru/scripts/xml_metall.asp", "01.04.2017", "07.04.2017"));
using (StreamReader sr = new StreamReader(@"C:\root.xml"))
{
XmlSerializer xml = new XmlSerializer(typeof(Metall));
var root = (Metall)xml.Deserialize(sr);
Console.WriteLine("\nДата\t\tЗолото\t\tСеребро\t\tПлатина\t\tПалладий");
for (int i = 0; i < root.Record.Count; i+=4)
{
Console.WriteLine(root.Record[i].Date + "\t" + root.Record[i].Buy+"\t\t"+root.Record[i+1].Buy+"\t\t" + root.Record[i + 2].Buy+"\t\t" + root.Record[i + 3].Buy);
}
}
Console.ReadKey(true);
}
static string getXMLFile(string url, string date_req1, string date_req2)
{
WebClient webClient = new WebClient();
return webClient.DownloadString(url + "?date_req1=" + date_req1 + "&date_req2=" + date_req2);
}
}
[XmlRoot(ElementName = "Record")]
public class Record
{
[XmlElement(ElementName = "Buy")]
public string Buy { get; set; }
[XmlElement(ElementName = "Sell")]
public string Sell { get; set; }
[XmlAttribute(AttributeName = "Date")]
public string Date { get; set; }
[XmlAttribute(AttributeName = "Code")]
public string Code { get; set; }
}
[XmlRoot(ElementName = "Metall")]
public class Metall
{
[XmlElement(ElementName = "Record")]
public List<Record> Record { get; set; }
[XmlAttribute(AttributeName = "FromDate")]
public string FromDate { get; set; }
[XmlAttribute(AttributeName = "ToDate")]
public string ToDate { get; set; }
[XmlAttribute(AttributeName = "name")]
public string Name { get; set; }
}
}