<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Chris Forbes blogs on SharePoint &#38; .NET &#187; Generating an RSS feed</title>
	<atom:link href="http://chrisforbesblogs.net/tag/generating-an-rss-feed/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrisforbesblogs.net</link>
	<description>Developers chat on SharePoint and .NET</description>
	<lastBuildDate>Tue, 08 May 2012 10:58:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='chrisforbesblogs.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/3aa4775025bad14a027d0ade34632a33?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Chris Forbes blogs on SharePoint &#38; .NET &#187; Generating an RSS feed</title>
		<link>http://chrisforbesblogs.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://chrisforbesblogs.net/osd.xml" title="Chris Forbes blogs on SharePoint &#38; .NET" />
	<atom:link rel='hub' href='http://chrisforbesblogs.net/?pushpress=hub'/>
		<item>
		<title>Creating an RSS Generator in SharePoint</title>
		<link>http://chrisforbesblogs.net/2010/01/18/creating-an-rss-generator-in-sharepoint/</link>
		<comments>http://chrisforbesblogs.net/2010/01/18/creating-an-rss-generator-in-sharepoint/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 20:37:00 +0000</pubDate>
		<dc:creator>Chris Forbes</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Generating an RSS feed]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">http://chrisforbesblogs.wordpress.com/?p=117</guid>
		<description><![CDATA[I recently had to create an RSS feed generator of SharePoint content and required a bit more flexibility that the out of the box SharePoint RSS feeds. There may be a number of approaches to this but here is an outline of how I did this…   So what do you get out of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisforbesblogs.net&#038;blog=6742676&#038;post=117&#038;subd=chrisforbesblogs&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://chrisforbesblogs.files.wordpress.com/2010/01/image.png"><img style="display:inline;margin-left:0;margin-right:0;border:0;" title="image" src="http://chrisforbesblogs.files.wordpress.com/2010/01/image_thumb.png?w=80&h=105" border="0" alt="image" width="80" height="105" align="right" /></a>I recently had to create an RSS feed generator of SharePoint content and required a bit more flexibility that the out of the box SharePoint RSS feeds. There may be a number of approaches to this but here is an outline of how I did this…</p>
<h3> </h3>
<h3>So what do you get out of the box?</h3>
<p>You enable RSS within your site collection/site via site settings. You also need to enable RSS on the specific list or document library. You do this via the list settings.</p>
<p>When enabled users see a new link from the list ‘Actions’ menu…</p>
<p><a href="http://chrisforbesblogs.files.wordpress.com/2010/01/image1.png"><img style="display:inline;border-width:0;" title="image" src="http://chrisforbesblogs.files.wordpress.com/2010/01/image_thumb1.png?w=244&h=227" border="0" alt="image" width="244" height="227" /></a></p>
<p>This link calls the page <em>listfeed.aspx</em> which you can find in the LAYOUTS folder within the <a href="http://chrisforbesblogs.net/2009/04/27/12-hive-quick-file-path-reference/">12 HIVE</a>. It’s worth taking a look at the code behind for this page which is contained within the Microsoft.SharePoint.ApplicationPages.dll which you can find in the _app_bin folder of any SharePoint site (And <em>not </em>the GAC). Using Reflector take a look at the class <em>ListFeed </em>and you will get an idea on how the RSS feed work.</p>
<p>There are a couple of query string fields which can be passed to this page. <em>list</em> and <em>View</em> the list is expecting the source list GUID and the view is looking for a lists view GUID. The thing I found odd was that even if you are in the a specific list view if you click the view RSS feed link you still only get of the an RSS feed back which is the default view i.e. the query string ‘View’ is not used? You can manually put this in an it works? Perhaps I’m missing something here?</p>
<p>The render method of this class calls the <em>WriteRssMethod </em>of the corresponding SPlist. This method is overloaded as follows</p>
<table class="memberListTable">
<tbody>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
<tr>
<td><a id="ctl00_MTCS_main_ctl09_ctl00_ctl00" href="http://msdn.microsoft.com/en-us/library/ms461364.aspx"><span style="color:#0033cc;">SPList.WriteRssFeed (Stream) </span></a></td>
<td>
<div>Writes the RSS feeds from the list to the specified document stream.</div>
</td>
</tr>
<tr>
<td><a id="ctl00_MTCS_main_ctl09_ctl00_ctl01" href="http://msdn.microsoft.com/en-us/library/ms415530.aspx"><span style="color:#0033cc;">SPList.WriteRssFeed (Stream, Int32) </span></a></td>
<td>
<div>Writes the RSS feeds from the list that are associated with the specified meeting to the specified document stream.</div>
</td>
</tr>
<tr>
<td><a id="ctl00_MTCS_main_ctl09_ctl00_ctl02" href="http://msdn.microsoft.com/en-us/library/ms472957.aspx"><span style="color:#0033cc;">SPList.WriteRssFeed (Stream, Int32, SPView) </span></a></td>
<td>
<div>Writes the RSS feeds from the list that are associated with the specified meeting and view to the specified document stream.</div>
</td>
</tr>
</tbody>
</table>
<p> </p>
<h3>Building your own RSS generator</h3>
<p>Anyway my requirements had to cater for</p>
<p>1. Return content which maps to specific content type fields</p>
<p>2. Return content from a specified view within a list – I used the view to filter and sort the content although I could have easily just done this in using SPQuery</p>
<p>I created a SharePoint solution with a new application page which would be mapped to the LAYOUTS  folder within the 12 Hive</p>
<p>The application page, called rssFeed.aspx contains the following mark-up</p>
<div><span style="font-size:x-small;"> </span></div>
<p><span style="font-size:x-small;">&lt;%</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">@</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">Assembly</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">Name</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;chrisforbesblogs.RSSTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8e473a8929984006&#8243;</span></span><span style="font-size:x-small;"> %&gt;</span></p>
<p>&lt;%</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">@</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">Page</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">Language</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;C#&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">Inherits</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;chrisforbesblogs.RSSTest.rssFeed&#8221;</span></span><span style="font-size:x-small;"> %&gt;</span></p>
<p>&lt;%</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">@</span></span><span style="font-size:x-small;"> </span><span style="color:#a31515;font-size:x-small;"><span style="color:#a31515;font-size:x-small;">OutputCache</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">Duration</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;300&#8243;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">VaryByParam</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;xsl;web;page;wp&#8221;</span></span><span style="font-size:x-small;"> </span><span style="color:#ff0000;font-size:x-small;"><span style="color:#ff0000;font-size:x-small;">VaryByCustom</span></span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">=&#8221;rights;feedresults&#8221;</span></span><span style="font-size:x-small;">%&gt;</span></p>
<p></span></p>
<p>In the same solution I created a class file called rssFeed.aspx.cs with the following inheritance from LayoutsPageBase</p>
<div id="codeSnippetWrapper">
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span style="color:#0000ff;">using</span> System;<span style="color:#0000ff;">using</span> System.Collections.Generic;<span style="color:#0000ff;">using</span> System.Text;<span style="color:#0000ff;">using</span> Microsoft.SharePoint;<span style="color:#0000ff;">using</span> Microsoft.SharePoint.WebControls;<span style="color:#0000ff;">using</span> System.Web.UI.WebControls;<span style="color:#0000ff;">using</span> System.Web.UI.HtmlControls;<span style="color:#0000ff;">using</span> System.Xml;<span style="color:#0000ff;">using</span> System.Globalization;

<span style="color:#0000ff;">namespace</span> chrisforbesblogs.RSSTest{    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> rssFeed :LayoutsPageBase    {</pre>
</div>
<p>Fields to store relevant objects</p>
<div id="codeSnippetWrapper">
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span style="color:#0000ff;">protected</span> SPList spList;<span style="color:#0000ff;">protected</span> SPWeb spWeb;<span style="color:#0000ff;">protected</span> SPView spView;<span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">string</span> viewName;<span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">string</span> listName;</pre>
</div>
<div id="codeSnippetWrapper"> </div>
<div>In the class I override the OnLoad method. I get the query string values for the required  list and view name and store these in class fields</div>
<div id="codeSnippetWrapper">
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> <span style="color:#0000ff;">void</span> OnLoad(EventArgs e){    <span style="color:#0000ff;">base</span>.OnLoad(e);

   <span style="color:#008000;">// System.Diagnostics.Debugger.Break();</span>

    <span style="color:#0000ff;">if</span> (!Page.IsPostBack)    {

        <span style="color:#0000ff;">try</span>        {

           viewName = (<span style="color:#0000ff;">base</span>.Request.QueryString.GetValues(<span style="color:#006080;">"View"</span>)[0]);                             listName = (<span style="color:#0000ff;">base</span>.Request.QueryString.GetValues(<span style="color:#006080;">"List"</span>)[0]);

           spWeb = SPControl.GetContextWeb(<span style="color:#0000ff;">this</span>.Context);           spList = spWeb.Lists[listName];

           <span style="color:#0000ff;">if</span> (spList == <span style="color:#0000ff;">null</span>) <span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> Exception(<span style="color:#006080;">"list not found"</span>);           spView = spList.Views[viewName];           <span style="color:#0000ff;">if</span> (spView == <span style="color:#0000ff;">null</span>) <span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> Exception(<span style="color:#006080;">"View Not Found"</span>);

        }        <span style="color:#0000ff;">catch</span> (Exception ex)        {

            <span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> SPException(ex.Message);        }

    }}</pre>
</div>
<p>Then in the render method return the relevant xml using some SharePoint API to get the required records and a string builder to construct the XML. You can also create the xml file using System.XML.XMLDocument but I find this way easier to read the XML as I write it.</p>
<div id="codeSnippetWrapper">
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;"><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> <span style="color:#0000ff;">void</span>  Render(System.Web.UI.HtmlTextWriter writer){     <span style="color:#0000ff;">base</span>.Render(writer);

     <span style="color:#0000ff;">if</span> (spList != <span style="color:#0000ff;">null</span>)     {

         <span style="color:#0000ff;">base</span>.Response.AppendHeader(<span style="color:#006080;">"ETag"</span>             , spList.CurrentChangeToken.ToString());         <span style="color:#0000ff;">base</span>.Response.AppendHeader(<span style="color:#006080;">"Last-Modified"</span>             , spList.LastItemModifiedDate.ToString(<span style="color:#006080;">"r"</span>             , CultureInfo.InvariantCulture));         <span style="color:#0000ff;">base</span>.Response.ContentType = <span style="color:#006080;">"text/xml"</span>;

         <span style="color:#0000ff;">if</span> (spView != <span style="color:#0000ff;">null</span>)         {             <span style="color:#0000ff;">base</span>.Response.ContentEncoding = Encoding.UTF8;

             <span style="color:#0000ff;">string</span> channelTitle = <span style="color:#006080;">"The RSS Channel title"</span>;             <span style="color:#0000ff;">string</span> channelDescription = <span style="color:#006080;">"The RSS Description"</span>;

             <span style="color:#0000ff;">string</span> channelLink = <span style="color:#006080;">"http://www.chrisforbesblogs.net"</span>;             <span style="color:#0000ff;">string</span> language = <span style="color:#006080;">"en-us"</span>;             <span style="color:#0000ff;">int</span> timeToLive = 60;             <span style="color:#0000ff;">string</span> copyright = <span style="color:#006080;">"Copyright 2009 - "</span>                  + DateTime.Now.Year + <span style="color:#006080;">" ChrisForbesBlogs.net"</span>;

             StringBuilder sb = <span style="color:#0000ff;">new</span> StringBuilder();             sb.Append(                 <span style="color:#006080;">"&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n"</span>);             sb.Append(<span style="color:#006080;">"&lt;rss version=\"2.0\"&gt;\r\n"</span>);             sb.Append(<span style="color:#006080;">"&lt;channel&gt;\r\n"</span>);

             sb.AppendFormat(<span style="color:#006080;">"&lt;title&gt;{0}&lt;/title&gt;\r\n"</span>                 , channelTitle);             sb.AppendFormat(<span style="color:#006080;">"&lt;link&gt;{0}&lt;/link&gt;\r\n"</span>                 , channelLink);             sb.AppendFormat(<span style="color:#006080;">"&lt;description&gt;{0}&lt;/description&gt;\r\n"</span>                 , channelDescription);             sb.AppendFormat(<span style="color:#006080;">"&lt;language&gt;{0}&lt;/language&gt;\r\n"</span>                 , language);             sb.AppendFormat(<span style="color:#006080;">"&lt;ttl&gt;{0}&lt;/ttl&gt;\r\n"</span>, timeToLive);             sb.AppendFormat(<span style="color:#006080;">"&lt;copyright&gt;{0}&lt;/copyright&gt;\r\n"</span>                 , copyright);

             <span style="color:#0000ff;">string</span> spTitle = <span style="color:#006080;">""</span>;             <span style="color:#0000ff;">string</span> spDescription = <span style="color:#006080;">""</span>;             <span style="color:#0000ff;">string</span> spDate = <span style="color:#006080;">""</span>;             <span style="color:#0000ff;">string</span> spAuthor = <span style="color:#006080;">"Chris Forbes"</span>;

             sb.AppendFormat(                <span style="color:#006080;">"&lt;lastBuildDate&gt;{0}&lt;/lastBuildDate&gt;\r\n"</span>                 , DateTime.Now.Date.ToShortDateString());

             SPListItemCollection items = spList.GetItems(spView);             <span style="color:#0000ff;">foreach</span> (SPListItem item <span style="color:#0000ff;">in</span> items)             {                 <span style="color:#008000;">//Make sure you are pulling back valid</span>                 <span style="color:#008000;">//SharePoint fields which are listed in the view</span>                 <span style="color:#0000ff;">if</span> (item[<span style="color:#006080;">"Title"</span>] != <span style="color:#0000ff;">null</span>)                     spTitle = item[<span style="color:#006080;">"Title"</span>].ToString();

                 <span style="color:#0000ff;">if</span> (item[<span style="color:#006080;">"Description"</span>] != <span style="color:#0000ff;">null</span>)                     spTitle = item[<span style="color:#006080;">"Description"</span>].ToString();

                 <span style="color:#0000ff;">if</span> (item[<span style="color:#006080;">"PageDate"</span>] != <span style="color:#0000ff;">null</span>)                     spTitle = item[<span style="color:#006080;">"PageDate"</span>].ToString();

                 sb.AppendFormat(<span style="color:#006080;">"&lt;item&gt;\r\n"</span>);                 sb.AppendFormat(<span style="color:#006080;">"&lt;title&gt;{0}&lt;/title&gt;"</span>, spTitle);                 sb.AppendFormat(<span style="color:#006080;">"&lt;link&gt;&lt;![CDATA[{0}]]&gt;&lt;/link&gt;\r\n"</span>                     , item.Url);                 sb.AppendFormat(                     <span style="color:#006080;">"&lt;description&gt;&lt;![CDATA[{0}]]&gt;&lt;/description&gt;\r\n"</span>                     , spDescription);                 sb.AppendFormat(<span style="color:#006080;">"&lt;author&gt;{0}&lt;/author&gt;\r\n"</span>                    , spAuthor);                 sb.AppendFormat(<span style="color:#006080;">"&lt;pubDate&gt;{0}&lt;/pubDate&gt;\r\n"</span>                    , spDate);                 sb.AppendFormat(<span style="color:#006080;">"&lt;/item&gt;\r\n"</span>);

             }

             sb.AppendFormat(<span style="color:#006080;">"&lt;/channel&gt;\r\n"</span>);             sb.AppendFormat(<span style="color:#006080;">"&lt;/rss&gt;\r\n"</span>);

             <span style="color:#0000ff;">base</span>.Response.Write(sb.ToString());         }

     }}</pre>
</div>
<p>I wrapped the returned field values in &lt;![CDATA[]]&gt; to ensure any illegal characters are ignored by the XML.</p>
<p>As I mentioned earlier you could easily extend this code to use SPQuery instead of relying on an existing view. You could also access a number of lists and aggregate the content into a single feed.</p>
<p>If your publishing this to an anonymous access site then you will have to add some additional methods to prevent an authentication challenge. If you look back the out of the box class file you can see some additional methods which handle this.</p>
<div><span style="font-size:x-small;"> </span></div>
<p><span style="font-size:x-small;"><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">protected</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">override</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">bool</span></span><span style="font-size:x-small;"> AllowAnonymousAccess</span></p>
<p>{</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">get</span></span></p>
<div><span style="font-size:x-small;"> </span></div>
<p></span><span style="font-size:x-small;">{</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">return</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">true</span></span><span style="font-size:x-small;">;</span></p>
<p>}</p>
<p>}</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">protected</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">override</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">bool</span></span><span style="font-size:x-small;"> RequireDefaultLayoutsRights</span></p>
<p>{</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">get</span></span></p>
<div><span style="font-size:x-small;"> </span></div>
<p></span><span style="font-size:x-small;">{</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">return</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">false</span></span><span style="font-size:x-small;">;</span></p>
<p>}</p>
<p>}</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">protected</span></span><span style="font-size:x-small;"> </span><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">override</span></span><span style="font-size:x-small;"> </span><span style="color:#2b91af;font-size:x-small;"><span style="color:#2b91af;font-size:x-small;">SPBasePermissions</span></span><span style="font-size:x-small;"> RightsRequired</span></p>
<p>{</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">get</span></span></p>
<div><span style="font-size:x-small;"> </span></div>
<p></span><span style="font-size:x-small;">{</p>
<p><span style="color:#0000ff;font-size:x-small;"><span style="color:#0000ff;font-size:x-small;">return</span></span><span style="font-size:x-small;"> (</span><span style="color:#2b91af;font-size:x-small;"><span style="color:#2b91af;font-size:x-small;">SPBasePermissions</span></span><span style="font-size:x-small;">.EmptyMask | </span><span style="color:#2b91af;font-size:x-small;"><span style="color:#2b91af;font-size:x-small;">SPBasePermissions</span></span><span style="font-size:x-small;">.Open);</span></p>
<p>}</p>
<p>}</p>
<p></span></p>
<p>Anyway hope the above is of some help to you, happy coding <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:848a53c5-22c6-4a0e-bd4e-18ff987b2019" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/SharePoint">SharePoint</a>,<a rel="tag" href="http://technorati.com/tags/RSS">RSS</a>,<a rel="tag" href="http://technorati.com/tags/Generating+RSS+from+SharePoint">Generating RSS from SharePoint</a></div>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5990f82b-5187-4343-814d-bcffee0ab6a9" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">del.icio.us Tags: <a rel="tag" href="http://del.icio.us/popular/SharePoint">SharePoint</a>,<a rel="tag" href="http://del.icio.us/popular/RSS">RSS</a>,<a rel="tag" href="http://del.icio.us/popular/Generating+RSS+from+SharePoint">Generating RSS from SharePoint</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chrisforbesblogs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chrisforbesblogs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chrisforbesblogs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chrisforbesblogs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chrisforbesblogs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chrisforbesblogs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chrisforbesblogs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chrisforbesblogs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chrisforbesblogs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chrisforbesblogs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chrisforbesblogs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chrisforbesblogs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chrisforbesblogs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chrisforbesblogs.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chrisforbesblogs.net&#038;blog=6742676&#038;post=117&#038;subd=chrisforbesblogs&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chrisforbesblogs.net/2010/01/18/creating-an-rss-generator-in-sharepoint/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ed3e25ef8a88f8fff819a7722f1805a9?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">chrisforbesblogs</media:title>
		</media:content>

		<media:content url="http://chrisforbesblogs.files.wordpress.com/2010/01/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://chrisforbesblogs.files.wordpress.com/2010/01/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
	</channel>
</rss>
