DarioSantarelli.Blog("UgiDotNet");

<sharing mode=”On” users=”*” />
posts - 176, comments - 105, trackbacks - 3

My Links

News


This is my personal blog. These postings are provided "AS IS" with no warranties, and confer no rights.




Tag Cloud

Archives

Post Categories

My English Blog

[WCF] Supporto RSS 2.0 e Atom 1.0

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

Print | posted on mercoledì 16 gennaio 2008 18:07 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET