Создание и сохранение xml - C#
Формулировка задачи:
Добрый день. Не думал, что это окажется настолько сложно, перерыл кучу тем, но так и не нашел ответа для моего случая.
Суть в чем: на сайте банка имеется сервис для получения курсов валют в xml. Их там большое количество, но мне нужно только 4 курса, для чего был реализован следующий код:
Далее нужно сохранить все полученные данные (они видны в консоли) в файл xml, предварительно обернув это в шапку
<DailyExRates Date="текущая дата">
</DailyExRates>
где, собственно, и остановились мои успехи...
могу предположить, что я сделал дурную работу,и достаточно было создать конечный файл и передавать в него значения атрибутов. а может я лошара, и какую-то ерунду несу)
если кто поможет с реализацией, буду очень рад и благодарен)
Листинг программы
- private static void Main(string[] args)
- {
- var ids = new[] { 292, 145, 293, 298 };
- var date = DateTime.Now.Date.ToString("MM-dd-yyyy").Replace("-", "/");
- var data = GetData(date);
- var res = GetExchange(ids, data);
- foreach (var currate in res)
- {
- Console.WriteLine(currate);
- }
- Console.ReadKey();
- }
- public static Uri GetUri(string date)
- {
- var ub = new UriBuilder("http://www.nbrb.by/Services/XmlExRates.aspx");
- // ub.Query = "ondate=" +date;
- return ub.Uri;
- }
- public static string GetData(string date)
- {
- var uri = GetUri(date);
- using (var wc = new WebClient())
- using (var stream = wc.OpenRead(uri.ToString()))
- using (var reader = new StreamReader(stream))
- {
- return reader.ReadToEnd();
- }
- }
- public static IEnumerable<string> GetExchange(int[] ids, string data)
- {
- var xDoc = XElement.Parse(data);
- foreach (var e in xDoc.Elements("Currency"))
- {
- if (ids.Contains(Convert.ToInt32(e.Attribute("Id").Value)))
- {
- yield return e.ToString();
- }
- }
- }
Решение задачи: «Создание и сохранение xml»
textual
Листинг программы
- var ids = new[] { "292", "145", "293", "298" };
- string url = string.Format("http://www.nbrb.by/Services/XmlExRates.aspx?ondate={0}", DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture));
- XDocument ratesDoc = XDocument.Load(url);
- var toDelete = ratesDoc.Root.Elements().Where(x => !ids.Contains(x.Attribute("Id").Value));
- toDelete.Remove();
- ratesDoc.Save("rates.xml");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д