Создание и сохранение 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");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д