Десериализация канала RSS в .NET - PullRequest
11 голосов
/ 29 августа 2009

Практически / возможно ли использовать сериализацию для чтения данных из RSS-канала? Я в основном хочу получить информацию из моей очереди Netflix (предоставленной из RSS-канала), и я пытаюсь решить, возможна ли / возможна ли сериализация, или я должен просто использовать что-то вроде XMLReader. Кроме того, что будет лучшим способом загрузить канал с URL? Я никогда не извлекал файлы ни с чего, кроме дисков, поэтому я не уверен, как это сделать.

Ответы [ 6 ]

20 голосов
/ 29 августа 2009

Если вы можете использовать LINQ, LINQ to XML - это простой способ освоить основы документа RSS-канала.

Это из того, что я написал , чтобы выбрать коллекцию анонимных типов из RSS-канала моего блога, например:

protected void Page_Load(object sender, EventArgs e)
{
  XDocument feedXML = XDocument.Load("http://feeds.encosia.com/Encosia");

  var feeds = from feed in feedXML.Descendants("item")
              select new
              {
                Title = feed.Element("title").Value,
                Link = feed.Element("link").Value,
                Description = feed.Element("description").Value
              };

  PostList.DataSource = feeds;
  PostList.DataBind();
}

Вы должны иметь возможность использовать что-то очень похожее на ваш канал Netflix.

15 голосов
/ 29 августа 2009

.NET 3.5 Framework добавил поддержку синдикации. Пространство имен System.ServiceModel.Syndication предоставляет набор типов для управления лентами, контентом и категориями, форматированием каналов (RSS 2.0, Atom 1.0) и т. Д.

http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.aspx

У вас есть несколько вариантов сериализации, но простейший, вероятно, лучше всего описан здесь:

http://msdn.microsoft.com/en-us/library/bb536530.aspx

4 голосов
/ 04 октября 2011
using System.ServiceModel.Syndication;

public static SyndicationFeed GetFeed(string uri)
    {
        if (!string.IsNullOrEmpty(uri))
        {
            var ff = new Rss20FeedFormatter(); // for Atom you can use Atom10FeedFormatter()
            var xr = XmlReader.Create(uri);
            ff.ReadFrom(xr);
            return ff.Feed;             
        }
        return null;
    }
3 голосов
/ 29 августа 2009

Если вы используете .NET 3.0 или 3.5 ... тогда я бы предложил использовать XMLReader для чтения документа в XDocument. Затем вы можете использовать LINQ to XML для запроса и преобразования RSS-канала во что-то пригодное для использования.

Создание чего-либо для десериализации XML также возможно и будет работать так же хорошо (если не лучше), но будет создавать больше времени.

В любом случае сработает ... делайте то, что вам удобнее (или, если вы пытаетесь изучить сериализацию XML, зайдите и узнайте что-то новое).

2 голосов
/ 29 августа 2009
  • Получить схему rss из http://www.thearchitect.co.uk/schemas/rss-2_0.xsd
  • Создание класса C # с использованием xsd.exe. xsd rssschema.xsd / c
  • Во время выполнения десериализуйте rss xml с использованием xsd и сгенерированного выше класса.
2 голосов
/ 29 августа 2009

Проверьте эту ссылку для довольно тщательной процедуры загрузки.

RSS в основном является производной от XML. Мне нравится эта ссылка для определения формата RSS. Этот имеет очень простой образец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...