Oggi per la prima volta ho avuto il piacere di utilizzare (in un progetto reale :)) la Syndacation library di WCF, che mette a disposizione un object model adibito alla creazione/modifica di Feed RSS 2.0 e Atom 1.0. OK... in rete troviamo diverse componenti gratuite (tra cui RSS.NET) , ma bisogna ammettere che avere questa feature integrata nel Framework 3 fa risparmiare un bel po' di tempo, senza tralasciare i vantaggi apportabili alla consistenza del codice :).
Riporto dunque una semplice applicazione console che mette in risalto la semplicità di utilizzo dell'objct model: codice assolutamente autoesplicativo ;) !!!
using System.ServiceModel.Syndication;
using System.Xml;
...
StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb))
{
SyndicationFeed feed = new SyndicationFeed("DarioSantarelli.Blog(\"UgiDotNet\");",
"<sharing mode=\"On\" users=\"*\" />",
new Uri("http://tempuri.org"));
feed.Language = "it-IT";
feed.Authors.Add(new SyndicationPerson("dario.santarelli@unicam.it",
"Dario Santarelli",
"http://tempuri.org"));
feed.Copyright = new TextSyndicationContent("© Copyright 2006-2007 Dario Santarelli");
feed.Generator = "Dario Generator";
feed.Categories.Add(new SyndicationCategory("Categoria1"));
feed.Categories.Add(new SyndicationCategory("Categoria2"));
List<SyndicationItem> items = new List<SyndicationItem>();
SyndicationItem item = new SyndicationItem();
item.Id = "1";
item.Title = TextSyndicationContent.CreatePlaintextContent("Titolo");
item.Content = SyndicationContent.CreateXhtmlContent("<p>contenuto xhtml</p>");
item.PublishDate = DateTime.Now;
item.Categories.Add(feed.Categories[0]);
item.Categories.Add(feed.Categories[1]);
items.Add(item);
feed.Items = items;
Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(feed);
// Atom10FeedFormatter atomFormatter = new Atom10FeedFormatter(feed);
rssFormatter.WriteTo(writer);
// atomFormatter.WriteTo(writer);
writer.Flush();
}
Console.WriteLine(sb.ToString());
Alcune osservazioni:
- WCF syndacation utilizza le classi XmlReader e XmlWriter per leggere/scrivere feed RSS 2.0 o Atom 1.0
- In realtà, oltre a SyndacationFeed è possibile salvare anche un SyndacationItem come Rss 2.0 o Atom 1.0 tramite i relativi metodi SaveAsRss20(XmlWriter writer) e SaveAsAtom10(XmlWriter writer)
- Interessanti gli oggetti SyndacationPerson ('author' or 'contributor' del feed) e SyndacationCategory
- La classe Rss20FeedFormatter/Atom10FeedFormatter è infine utilizzata per scrivere il feed nell'XmlWriter da utilizzare nella presentazione utente
- SyndacationContent permette di specificare il contenuto di ciascun item del feed in vari formati come Html, PlainText e Xhtml