Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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());
        }