Сериализация: что не так с этим кодом? - C#
Формулировка задачи:
В курсе Байдачного http://www.microsoftvirtualacademy.com/training-courses/csharp_part_2
в 17 уроке
приводится такой код. У автора работает, у меня - нет (только вместо украинского http://censor.net.ua/includes/news_full_ru.xml пришлось поставить ссылку на RIA, Цензор у нас заблокирован цензурой).
Т.е. код включительно
работает, если например сделать
- OK, но дальше:
не ОК. В чем причина?
string s = await web.DownloadStringTaskAsync(new Uri("http://ria.ru/export/rss2/incidents/index.xml", UriKind.Absolute));
Console.Write(s);
XmlSerializer xml = new XmlSerializer(typeof(RssClass)); RssClass res = xml.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(s))) as RssClass;
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace ParserConsole { [XmlRoot(ElementName="rss")] public class RssClass { [XmlElement(ElementName = "channel")] public ChannelClass Channel { get; set; } } public class ChannelClass { [XmlElement(ElementName = "item")] public List<ItemClass> Items { get; set; } } public class ItemClass { [XmlElement(ElementName = "title")] public string Title { get; set; } } }
using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Xml.Serialization; namespace ParserConsole { class Program { static void Main(string[] args) { ReadData(); Thread.Sleep(1000); Console.ReadKey(); } private async static void ReadData() { WebClient web = new WebClient(); string s = await web.DownloadStringTaskAsync(new Uri("http://ria.ru/export/rss2/incidents/index.xml", UriKind.Absolute)); XmlSerializer xml = new XmlSerializer(typeof(RssClass)); RssClass res = xml.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(s))) as RssClass; } } }
Решение задачи: «Сериализация: что не так с этим кодом?»
textual
Листинг программы
class Program { static void Main(string[] args) { RssClass rss = ReadData().Result; foreach (ItemClass item in rss.Channel.Items) { Console.WriteLine(item.Title); } Console.Read(); } private async static Task<RssClass> ReadData() { WebClient web = new WebClient(); string s = await web.DownloadStringTaskAsync(new Uri("http://ria.ru/export/rss2/incidents/index.xml", UriKind.Absolute)); XmlSerializer xml = new XmlSerializer(typeof(RssClass)); return xml.Deserialize(new MemoryStream(Encoding.Default.GetBytes(s))) as RssClass; } } [XmlRoot(ElementName = "rss")] public class RssClass { [XmlElement(ElementName = "channel")] public ChannelClass Channel { get; set; } } public class ChannelClass { [XmlElement(ElementName = "item")] public List<ItemClass> Items { get; set; } } public class ItemClass { [XmlElement(ElementName = "title")] public string Title { get; set; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д