public override Feed Parse() { // Parse feed XML into class hierarchy var feed = from e in this.FeedXmlDocument.Element("rss").Elements("channel") let HubbubUri = e.Elements(atomNamespace + "link").FirstOrDefault(l => l.Attribute("rel") != null && l.Attribute("rel").Value == "hub") let SelfRefLink = e.Elements(atomNamespace + "link").FirstOrDefault(l => l.Attribute("rel") != null && l.Attribute("rel").Value == "self") select new Feed() { Name = XHelper.SafeGetString(e.Element("title")), Uri = XHelper.SafeGetString(SelfRefLink, "href"), WebUri = XHelper.SafeGetString(e.Element("link")), HubbubUri = XHelper.SafeGetString(HubbubUri, "href"), Generator = XHelper.SafeGetString(e.Element("generator")), Articles = (from i in e.Elements("item") let itemId = XHelper.SafeGetString(i.Element("guid")) ?? XHelper.SafeGetString(i.Element("link")) // Try use Link as GUID as some RSS feeds do not have a GUID let description = XHelper.SafeGetString(i.Element("description")) let content = XHelper.SafeGetString(i.Element(this.contentNamespace + "encoded")) select new FeedArticle { ServerId = itemId, Title = XHelper.SafeGetString(i.Element("title")), WebUri = XHelper.SafeGetString(i.Element("link")), Author = XHelper.SafeGetString(i.Element("author")), CommentsUri = XHelper.SafeGetString(i.Element("comments")), Published = i.Element("pubDate") != null ? RFCDateParser.ParseRFC822Date(i.Element("pubDate").Value, DateTime.Now) : DateTime.Now, Content = content ?? description }).ToList() }; return(feed.FirstOrDefault()); }
public override Feed Parse() { // Get default namespace defaultNamespace = XHelper.SafeGetString(FeedXmlDocument.Root, "xmlns"); // Parse feed XML into class hierarchy var feed = from e in this.FeedXmlDocument.Root.Elements(this.defaultNamespace + "channel") select new Feed() { Name = XHelper.SafeGetString(e.Element(this.defaultNamespace + "title")), WebUri = XHelper.SafeGetString(e.Element(this.defaultNamespace + "link")), Articles = (from i in this.FeedXmlDocument.Root.Elements(this.defaultNamespace + "item") let itemId = XHelper.SafeGetString(i.Element(this.defaultNamespace + "guid")) ?? XHelper.SafeGetString(i.Element(this.defaultNamespace + "link")) // Try use Link as GUID as some RDF feeds do not have a GUID let description = XHelper.SafeGetString(i.Element(this.defaultNamespace + "description")) let content = XHelper.SafeGetString(i.Element(this.contentNamespace + "encoded")) select new FeedArticle { ServerId = itemId, Title = XHelper.SafeGetString(i.Element(this.defaultNamespace + "title")), WebUri = XHelper.SafeGetString(i.Element(this.defaultNamespace + "link")), Author = XHelper.SafeGetString(i.Element(this.defaultNamespace + "author")), CommentsUri = XHelper.SafeGetString(i.Element(this.defaultNamespace + "comments")), Published = i.Element(this.defaultNamespace + "pubDate") != null ? RFCDateParser.ParseRFC822Date(i.Element(this.defaultNamespace + "pubDate").Value, DateTime.Now) : DateTime.Now, Content = content ?? description }).ToList() }; return(feed.FirstOrDefault()); }