1

May

Atom2Rss converter in ASP.NET

Ho dovuto perdere un’ora di tempo per cercare un valido convertitore tra questi due formati. Senza risultato… Il primo in PHP funzionava con un file caricato localmente: ho cambiato qualche riga e probabilmente con qualche adattamento in più avrebbe funzionato, ma mi sono stufato e ho lasciato perdere. Poi ho trovato questa seconda versione in ASP ma era talmente hard-coded che mi ha fatto passare la voglia. Poi ho visto che era disponibile questo servizio online ottimo ma avrei voluto farne a meno, altrimenti i miei link sarebbero stati dipendenti a vita da questo sito (ah si, perchè lo scopo è utilizzare feeds Atom, non supportati, su blog Wordpress). Quindi infine ho optato per la soluzione custom in ASP.NET. Ho creato un sottodominio a OCDStudio per hostare tutte le utilities che prima hostavo qui ed ora il servizio (in realtà semplice script) per fare la conversione è a http://utilities.ocdstudio.net/Feed.aspx (probabilmente fino a lunedì non si vedrà causa propagazione dei DNS).

Per utilizzarlo bisogna passare un URL come parametro “url”, come in questo link:
http://utilities.ocdstudio.net/Feed.aspx?url=http://dotnetlombardia.org/blogs/rob/rss.aspx

Il codice per fare questa conversione l’ho messo direttamente in pagina, per evitare l’overhead del Code-Behind e dell’ereditarietà della pagina ASP.NET. Perciò la mia pagina è questa:
[code language="csharp"]Response.ContentType = "application/xml";   
try
{
    string url = Request.QueryString["url"];
    System.Xml.XmlReader reader = System.Xml.XmlReader.Create(url);
    System.ServiceModel.Syndication.SyndicationFeed feed = System.ServiceModel.Syndication.SyndicationFeed.Load(reader);
    System.ServiceModel.Syndication.Rss20FeedFormatter rss2 = new System.ServiceModel.Syndication.Rss20FeedFormatter(feed);
    System.Xml.XmlWriter wr = System.Xml.XmlTextWriter.Create(Response.OutputStream);
    rss2.WriteTo(wr);
    wr.Close();
}
catch (Exception ex)
{
    Response.Write(ex.Message);
}[/code]

by Roberto Freato on 5/1/2010
Post archive