#942 - Creare feed RSS e Atom con il .NET Framework 3.5

Nell'ultima versione del .NET Framework 3.5 vengono fornite, all'interno del namespace System.ServiceModel.Syndication, delle classi apposite per la lettura e scrittura dei feed nel formato RSS oppure ATOM.

Se, per esempio, volessimo offrire nella nostra web application un servizio di feed con le ultime novità, non dovremo più utilizzare classi esterne o dedicarci alla scrittura di una funzione apposita, ma utilizzare direttamente queste classi.

Vediamo un semplice esempio di codice per fare ritornare ad una nostra pagina ASP.NET l'output in formato RSS/ATOM di un ipotetico nostro blog (è necessario referenziare anche la dll "System.ServiceModel.Web" nel progetto):

using System;
using System.Xml;
using System.Collections.Generic;
using System.ServiceModel.Syndication;

namespace RssGenerator
{
  public partial class _Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      // Contenuto ipotetico del blog

      var feeds=new []{
        new {Id = 1, Title="Titolo 1", Body="Testo del primo rss", Date=new DateTime(2008,1,1), Category=".Net"},
        new {Id = 2, Title="Titolo 2", Body="Testo del secondo rss", Date=new DateTime(2008,1,2), Category="C#"},
        new {Id = 3, Title="Titolo 3", Body="Testo del terzo rss", Date=new DateTime(2008,1,3), Category=".Net"},
        new {Id = 4, Title="Titolo 4", Body="Testo del quarto rss", Date=new DateTime(2008,1,4), Category=".Net"},
        };

      // Categorie

      var categories = new[] {
        ".Net", "C#" };

      using (var writer = XmlWriter.Create(Response.OutputStream))
      {
        // Creo il feed impostanto le proprietà di base

        var feed = new SyndicationFeed("AZ", "Testo descrittivo rss", new Uri("http://AZ.AZ"));

        // Aggiungo l'autore

        feed.Authors.Add(new SyndicationPerson("andrew@aspitalia.com", "AZ",  "http://ciclismo.sitiasp.it"));

        // Aggiungo categorie al feed

        foreach (var category in categories) feed.Categories.Add(new SyndicationCategory(category));
       
        // Copyright

        feed.Copyright = new TextSyndicationContent("© AZ for AspItalia.com");

        // chi ha generato

        feed.Generator = "AZ";

        // Culture utilizzata

        feed.Language = "it-IT";

        // Aggiungo ogni feed alla collection

        List<SyndicationItem> items = new List<SyndicationItem>();
        foreach (var singleFeed in feeds)
        {
          var item = new SyndicationItem();
          item.Id = singleFeed.Id.ToString();
          item.Title = TextSyndicationContent.CreatePlaintextContent(singleFeed.Title);
          item.Content = SyndicationContent.CreateXhtmlContent(singleFeed.Body);
          item.PublishDate = singleFeed.Date;
          item.Categories.Add(new SyndicationCategory(singleFeed.Category));
          // Link di ogni singolo post

          item.AddPermalink(new Uri("http://www.sito.xx/pagina.aspx?id=" + singleFeed.Id));
          items.Add(item);
        }

        feed.Items = items;

        Response.Clear();
        Response.ContentType = "application/xml";

        // Scrive feed!


        // Con Atom, decommentare questo codice per utilizzare ATOM

        //var atomFormatter = new Atom10FeedFormatter(feed);

        //atomFormatter.WriteTo(writer);


        // Con Rss 2, commentare questo codice per usare ATOM

        var rssFormatter = new Rss20FeedFormatter(feed);
        rssFormatter.WriteTo(writer);
      }
      Response.End();
    }
  }
}


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

pietro09 scrive:
#942 - Creare feed RSS e Atom con il .NET Framework 3.5

L'ho provato e va benissimo.Volevo sapere se l'istruzione di sotto ha un analogo basicvar feeds=new []{ new {Id = 1, Title="Titolo 1", Body="...
martedì 13 maggio 2008 | 2 risposte
pietro09 scrive:
#942 - Creare feed RSS e Atom con il .NET Framework 3.5

Interessante. Hai pure un esempio di lettura? Ciao
lunedì 12 maggio 2008 | 2 risposte

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC