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();
}
}
}Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Interessante. Hai pure un esempio di lettura? Ciao
Per inserire un commento, devi registrarti alla nostra community.









Stampa
Download 



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="...
Continua »»» | Rispondi »»»