Сериализация: что не так с этим кодом? - 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; }
}