namespace FormulaOneApp.Rss.Readers { using System.Collections.ObjectModel; using System.Xml.Linq; using Helpers; using Models; internal class AtomReader : BaseReader { /// /// Return a RssFeed object using the XDocument data /// /// /// public override RssFeed LoadFeed(XDocument doc) { var feed = new RssFeed(); SetMediaImage(feed, doc); feed.Description = doc.Root.GetSafeElementString("summary"); feed.Items = new ObservableCollection(); feed.LastBuildDate = doc.Root.GetSafeElementDate("updated"); feed.Link = doc.Root.GetLink("self"); if (doc.Root == null) return feed; foreach (XElement item in doc.Root.Elements(doc.Root.GetDefaultNamespace() + "entry")) { RssItem rssItem = ParseItem(item); feed.Items.Add(rssItem); } return feed; } private static RssItem ParseItem(XElement item) { var rssItem = new RssItem {Title = item.GetSafeElementString("title")}; string description = item.GetSafeElementString("description"); rssItem.Description = !string.IsNullOrEmpty(description) ? description : item.GetSafeElementString("content"); rssItem.Image = item.GetImage(); rssItem.PublishDate = item.GetSafeElementDate("published") ?? item.GetSafeElementDate("updated"); rssItem.Guid = item.GetSafeElementString("id"); rssItem.Link = item.GetLink("alternate"); return rssItem; } } }