web 2.0

A Simple Lightweight RSS Feed Generator for ASP.NET

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(2286)

kick it on DotNetKicks.com

Share/Save/Bookmark Subscribe

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

ASP.NET | C#

Comments

Add comment


 

biuquote
Loading



Technorati Profile