How to parse WordPress RSS feed using LINQ
18 Mar 2010Here’s a code snippet of parsing a typical WordPress RSS feed using LINQ. Note, we have to skip the first image from the media element since that’s usually a gravatar of the author.
Everything else is pretty straight forward.
private void BindBlogFeed() { XDocument doc = XDocument.Load("http://blogworkseverytime.wordpress.com/feed/"); XNamespace content = "http://purl.org/rss/1.0/modules/content/"; XNamespace media = "http://search.yahoo.com/mrss/"; var query = (from feed in doc.Descendants("item") orderby DateTime.Parse(feed.Element("pubDate").Value) descending select new { Title = feed.Element("title").Value, Description = HttpUtility.HtmlDecode(feed.Element("description").Value), Content = HttpUtility.HtmlDecode(feed.Element(content.GetName("encoded")).Value), Image = (from img in feed.Elements(media.GetName("content")) where img.Attribute("url").Value.Contains("gravatar") == false select img.Attribute("url").Value).FirstOrDefault() ?? "", Link = feed.Element("link").Value, Date = DateTime.Parse(feed.Element("pubDate").Value).ToShortDateString() }); lvFirstBlogFeed.DataSource = query.Take(1).ToList(); lvFirstBlogFeed.DataBind(); lvRemainingBlogFeed.DataSource = query.Skip(1).ToList(); lvRemainingBlogFeed.DataBind(); }