Hi,
Today a pretty quick article on HowTo generate RSS Feeds for your ASP.NET Web Site.
Here is a sample of code in order to make it works quickly.
The RssFeed Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Linq;
using System.Xml;
using System.Globalization;
namespace Sb2.Rss
{
public class RssFeed
{
#region Private Properties
private List<RssFeedItem> Items { get; set; }
#endregion
#region Public Properties
public String Title { get; set; }
public String Link { get; set; }
public String Description { get; set; }
public CultureInfo Language { get; set; }
#endregion
#region Constructors
public RssFeed()
{
Items = new List<RssFeedItem>();
}
#endregion
#region Private Methods
private String GenerateRss()
{
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (XmlTextWriter xtw = new XmlTextWriter(sw))
{
// Write Headers
xtw.WriteStartDocument();
xtw.WriteStartElement("rss");
xtw.WriteAttributeString("version", "2.0");
xtw.WriteStartElement("channel");
xtw.WriteElementString("title", Title);
xtw.WriteElementString("link", Link);
xtw.WriteElementString("description", Description);
xtw.WriteElementString("language", Language.Name);
// Write Items
foreach (var item in Items)
{
xtw.WriteStartElement("item");
xtw.WriteElementString("title", item.Title);
xtw.WriteElementString("description", item.Description);
xtw.WriteElementString("link", item.Link);
xtw.WriteEndElement();
}
xtw.WriteEndDocument();
}
}
return sb.ToString();
}
#endregion
#region Public Methods
public void AddItem(RssFeedItem item)
{
if (!Items.Contains(item))
Items.Add(item);
}
public void WriteTo(Stream stream)
{
String s = GenerateRss();
using (StreamWriter sw = new StreamWriter(stream))
{
sw.Write(s);
}
}
#endregion
#region Public Overrides Methods
public override string ToString()
{
return GenerateRss();
}
#endregion
}
}
The RssFeedItem Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace Sb2.Rss
{
public class RssFeedItem
{
public String Title { get; set; }
public String Description { get; set; }
public String Link { get; set; }
}
}
A Sample of Usage using HttpHandler
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.ContentType = "text/xml";
RssFeed feed = new RssFeed()
{
Title = "Sb2 Developers Blog",
Description = "My Description",
Language = new CultureInfo("en-US"),
Link = "http://blog.sb2.fr"
};
RssFeedItem item = new RssFeedItem()
{
Title = "My Post Item",
Link = "http://blog.sb2.fr",
Description = "My Test Post"
};
feed.AddItem(item);
feed.WriteTo(context.Response.OutputStream);
}
public bool IsReusable
{
get
{
return false;
}
}
}
Hope this Help's !
Stay Tuned :)
Download Solution - Sb2Rss.zip
Views(2928)

