Feed RSS to Your Users

Create RSS Feeds for Users to Consume on Their Terms





Feed RSS to Your Users

Create RSS Feeds for Users to Consume on Their Terms


By Steve C. Orr


When you publish a new item on your Web site you usually must wait for users to visit it in order for them to discover the new item. And there s no telling when that will be. Even if your users would be genuinely excited about the new item, they simply don t know about it yet. Some Web sites send out e-mail newsletters to inform users of developing news, but, for a variety of reasons, this is often less than ideal: overzealous spam filters, overwhelmed inboxes, and information overload can cause users to overlook such an information source. Users get annoyed by e-mail newsletters that come too often, and newsletters that come too infrequently could cause users to lose interest in your site. What s really needed is a technology that puts users in the driver s seat. Most users have limited time and, therefore, prefer a quick and consolidated summary of what s new and noteworthy on your site and others. That s where RSS comes in ...


What Is RSS?

Really Simple Syndication (RSS) is an XML-based format that provides a simple way to let users know about new news stories in a way that s convenient to them. There is a virtually infinite supply of RSS feeds available on the Internet. When a user visits an interesting Web site and sees a symbol similar to Figure 1, it s an indication that an RSS feed is available to which they may want to subscribe.


Figure 1: This little symbol indicates to users that the Web site they are viewing has an RSS feed available so they can easily keep up to date on breaking news stories from that site.


There is a variety of software available on the Internet that lets users subscribe to and consume RSS feeds in a fashion that s convenient to them. Such news aggregators keep track of which stories users have already read, and generally highlight new news stories that may be of interest. While there are software programs available that are dedicated solely to RSS reading and aggregation, RSS support is also built into most current Web browsers. Internet Explorer 7 should be released by the time you read this, and it has fantastic new RSS support built in (see Figure 2). Firefox 1.5 has limited RSS support built in, as well.


Figure 2: Internet Explorer 7 has excellent new built-in RSS reading capabilities, including friendly subscription features, attractive RSS formatting, and powerful filtering capabilities.


RSS Format

For your Web site to provide RSS support, it must simply provide an XML file in a specific format that summarizes the news articles you wish to publicize. While the XML format for RSS has a long and controversial history, RSS 2.0 is the format I recommend, because it is simple and widely supported. A sample of this format is shown in Figure 3.


 Toothpaste and Ammunition web site


 News about Toothpaste and Ammo


 [email protected]&A.net


   Colgate Supreme prevents tooth decay

   Preventing tooth decay


   [email protected]&A.net


   Fri, 15 Jan 2007 03:47:37 GMT



   .44 caliber special

   Big ammo sale


   [email protected]&A.net


   Sat, 16 Jan 2007 04:48:21 GMT


Figure 3: This XML sample shows the RSS 2.0 format, which is simple and widely supported.


An RSS feed contains a channel element, which contains the required sub elements title, link, and description. The channel can also contain other optional sub elements, such as language, webMaster, and others. Figure 4 contains a list of the channel element s required elements, along with many of its more popular optional elements. For a complete list, see the RSS 2.0 specification at http://validator.w3.org/feed/docs/rss2.html.


Channel Elements

Description of the Element s Value


(Required) The name of the channel as it should appear to end users.


(Required) A brief narrative about the contents of the channel.


(Required) The URL that leads to the Web site that corresponds with this channel.


(Optional) Standard language code of the main language of the Web site.


(Optional) The e-mail address of the Web site s Webmaster.


(Optional) The time and date that the channel contents last changed.


(Optional) Time To Live The number of minutes that the channel can be cached.

Figure 4: These are some of the most useful channel elements defined by the RSS 2.0 XML standard.


The channel element also contains a series of Items, which each also contain the required sub elements title, link, and description. It too can contain a variety of optional elements, such as the category and pubDate elements shown in this example. Figure 5 contains a list of all the required and optional item sub elements.


Item Elements

Description of the Element s Value


(Required) The name of the item as it should appear to end users.


(Required) A brief narrative about the contents of the item.


(Required) The URL that leads to the full article.


(Optional) The e-mail address of the item s author.


(Optional) The name of the category to which the item belongs.


(Optional) A URL to a page that has comments about the item.


(Optional) The URL to a media file about the item (such as a hyperlink to an MP3 or video file).


(Optional) A string that uniquely identifies the item.


(Optional) The date and time that the item was published.


(Optional) The RSS channel from which the item originally came.

Figure 5: This is the complete list of sub elements supported by the item element according to the RSS 2.0 XML standard.


SiteMap Files

Many ASP.NET 2.0 Web applications already have an XML document that describes the pages that comprise the site. ASP.NET 2.0 SiteMaps have a structure not entirely dissimilar to the RSS 2.0 standard. All it takes is a little code to translate a SiteMap into the RSS 2.0 structure. Figure 6 shows a sample of a basic SiteMap file.








        description="Financial" />


      title="Office Suites"

             description="Office Suites" />







           description="Computers" />



           description="Keyboards" />







           description="Fiction" />



     description="Finances" /> 



Figure 6: ASP.NET 2.0 SiteMap files are comprised of a format that is not entirely dissimilar to the RSS 2.0 XML standard, which makes it easy to translate from one format to the other.


As you can see, each SiteMap file contains title, description, and url attributes very similar to the item elements in an RSS 2.0 file. SiteMap files can be very useful for binding to menus and other navigational controls, and with a little effort they can also be quite useful for RSS feed generation. For more details about SiteMap files, see Automate Navigation Chores.


Generating an RSS Feed from a SiteMap File

The RSS.aspx.vb file shown in Figure 7 consumes a standard two-level SiteMap file (as shown in Figure 6) and generates an XML RSS feed from it.


Imports System.Xml

Partial Class RSS

 Inherits System.Web.UI.Page

 Protected Sub Page_Load(ByVal sender As Object, _

   ByVal e As System.EventArgs) Handles Me.Load

 'Clear the response and prepare it for Xml output


     Response.ContentType = "text/xml"

     Response.AddHeader("Content-Disposition", _


 'Instantiate an Xml Text Writer object

     Dim xtw As XmlTextWriter = _

       New XmlTextWriter(Response.OutputStream, _



     'Required RSS tags


     xtw.WriteAttributeString("version", "2.0")

     'Create Channel Tags


     xtw.WriteElementString("title", "Some Web Site")

     xtw.WriteElementString("link", "http://SomeWeb.net")

     xtw.WriteElementString("description", "Techie Stuff")

     xtw.WriteElementString("language", "en-US")

     'Output each item

     For Each smnTop As SiteMapNode _

      In SiteMap.RootNode.ChildNodes

       For Each smn As SiteMapNode In smnTop.ChildNodes


         xtw.WriteElementString("title", smn.Title)

         xtw.WriteElementString("description", _


         xtw.WriteElementString("category", smnTop.Title)

     'Generate the item's URL

         Dim baseUri As New Uri("http://SomeWeb.net")

         Dim myUri As New Uri(baseUri, smn.Url)

         xtw.WriteElementString("link", myUri.AbsoluteUri)

     'Close the item tag




     'Close each remaining tag







 End Sub

End Class

Figure 7: This ASPX page processes the Web application s SiteMap file and generates an RSS feed from it.


The page starts by clearing the Response object because we don t want any of the usual HTML headers to be output since the goal is to output an XML file. The next two lines in the first code block also aim to make it clear to the browser that this is to be interpreted as an XML document, not a Web page.


The second code block of Figure 7 instantiates an Xml Text Writer object so that it can later be filled with the resulting RSS formatted XML. The third code block outputs the initial XML element, which identifies it as an RSS 2.0 formatted XML file.


The fourth code block of Figure 7 creates the Channel element and all of its sub elements (except the Item list), These sub elements specify the title of the channel, the URL that the channel represents, a description of the channel, and the language in which it is published.


The main loop in Figure 7 outputs each item in the two-level hierarchy of the SiteMap shown in Figure 6. Each Item has a title, description, category, and link sub element. A few lines of code are needed to calculate the item s absolute URL, because relative paths are not very useful in an RSS feed.


Finally, each XML element tag is closed. The resulting RSS document is shown in Figure 8, which can be consumed by any standard RSS-reading software, including Internet Explorer 7.


 Some Web Site


 Computer Stuff






 Office Suites

 Office Suites



















Figure 8: This RSS is the result of processing the SiteMap in Figure 6 through the code of Figure 7.


Adding Internet Explorer 7 and Firefox Support

As mentioned earlier, Internet Explorer 7 has exciting new support for RSS (as shown in Figure 2). It has user-friendly subscription features, attractive formatting of otherwise ugly XML, and powerful filtering and sorting capabilities so users can right away get to the stories in which they re interested.


However, for Internet Explorer 7 and Firefox to provide their RSS support, they must first be informed that your Web site has a related RSS feed available. It only takes a single link element in the header section of a Web page to ensure these browsers recognize the RSS file for your site:




   title="Some Web Site's RSS Feed"

   href="http://someweb.net/rss.aspx" />


The href attribute needs to point to your RSS file. In the previous examples, the RSS is dynamically generated by an ASPX page, but you could just as easily point the above href attribute to a manually maintained (or periodically generated) static XML file.


When this link element is present the browser will light up the icon pictured in Figure 1, drawing attention to the feed and enabling advanced feed-handling functionality.


I suggest you put such a link element into your master page so Internet Explorer 7 recognizes the RSS feed is associated with all Web pages within your site. Of course, more complex scenarios are possible, such as having more than one RSS feed available (or more than one channel) and associating them with specific pages, but I ll leave this as an exercise for you.



RSS has long been an effective way to ensure new news items are published in a timely manner that allows users to stay informed non-intrusively. Now that major browsers are adding deluxe support for RSS, it can no longer go ignored by the masses. Soon your users will be demanding RSS feeds, so it is time to become familiar with them so you can give users the solutions they seek.


The sample code for this article is available for download (in both VB.NET and C#).


Steve C. Orr is an MCSD and a Microsoft MVP in ASP.NET. He s been developing software solutions for leading companies in the Seattle area for more than a decade. When he s not busy designing software systems or writing about them, he can often be found loitering at local user groups and habitually lurking in the ASP.NET newsgroup. Find out more about him at http://SteveOrr.net or e-mail him at mailto:[email protected].




Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.