The SyndicationFeed class from System.ServiceModel.Syndicatation makes it easy to work with feeds and extensions. The code below uses an RSS feed from space.live.com to show photo albums on a page. Of course there are many ways to consume RSS with and w/o code, but the WCF enhancements with .NET 3.5 are a nice new trick. You can see the result at https://www.steveres.com/SpacesPics.aspx
r = XmlReader.Create("https://yournamegoeshere.spaces.live.com/photos/feed.rss");
albums = SyndicationFeed.Load(r);
r.Close();
foreach (SyndicationItem album in albums.Items)
{// album.links[0].URI points to this album page on spaces.live.com
// album.Summary (not shown) is an HTML block with thumbnails of the album pics
cell.Text= string.Format("<a href='{0}'>{1}</a>", album.Links[0].Uri, album.Title.Text);
albumRSS = GetAlbumRSS(album);
r = XmlReader.Create(albumRSS);
photos = SyndicationFeed.Load(r);
r.Close();
foreach (SyndicationItem photo in photos.Items)
{
// photo.Summary is an HTML block with a thumbnail of the pic
cell.Text = string.Format("{0}", photo.Summary.Text);
}}
//
// helper to extract the feed to one album from the albums feed
//
private string GetAlbumRSS(SyndicationItem album)
{string url = "";
foreach (SyndicationElementExtension ext in album.ElementExtensions)
if (ext.OuterName == "itemRSS") url = ext.GetObject<string>();
return (url);}
Comments
Anonymous
January 20, 2008
PingBack from http://msdnrss.thecoderblogs.com/2008/01/20/using-syndicationfeed-to-display-photos-from-spaceslivecom-2/Anonymous
March 11, 2008
Hi Steve, I want to validate RSS feed url given by the user programmatically. Ofcourse, there are lot of web sites they do validate rss feeds...like http://validator.w3.org/feed/check.cgi?url="RSS Feed uRL"...it will validate and tell you the results. But i want to do programmatically using .NET ...so is there any API is available....it would be great if you help in this regard. Thanks & Regards, KathirAnonymous
May 16, 2013
Exception while reading r = XmlReader.Create("yournamegoeshere.spaces.live.com/.../feed.rss"); How can i give Proxy (407) Proxy Authentication RequiredAnonymous
June 06, 2013
very helpful code. it helped me a lot.Anonymous
May 03, 2014
Ashokraj we use webclient to solve this issue. using (WebClient client = new WebClient()) { //set your proxy to client here string data = client.DownloadString(url); using (XmlReader reader = XmlReader.Create(new StringReader(data))) { SyndicationFeed feed = SyndicationFeed.Load(reader); foreach (SyndicationItem item in feed.Items) { String subject = item.Title.Text; Console.WriteLine("{0}" , subject); } } }