Beispiel #1
0
        //Parse
        private void ParseRSS()
        {
            try
            {
                var feed = SyndicationFeed.Load(XmlReader.Create(URL));

                this.Updated  = feed.LastUpdatedTime.ToString();
                this.Title    = feed.Title.ToString();
                this.Link     = feed.Links.First(l => l.RelationshipType.Trim().ToLower() == "alternate").Uri.ToString();
                this.Category = new Entry._Category(feed.Categories.FirstOrDefault(c => c.Name != "").Name, feed.Categories.FirstOrDefault(c => c.Name != "").Label);
                this.ID       = feed.Id;

                //Items
                foreach (var item in feed.Items)
                {
                    //Authors
                    List <Entry._Author> authors = new List <Entry._Author>();
                    foreach (SyndicationPerson author in item.Authors)
                    {
                        authors.Add(new Entry._Author(author.Name, author.Uri));
                    }

                    //Categories
                    List <Entry._Category> categories = new List <Entry._Category>();
                    foreach (SyndicationCategory category in item.Categories)
                    {
                        categories.Add(new Entry._Category(category.Name, category.Label));
                    }

                    //Links
                    List <string> Links = new List <string>();
                    foreach (SyndicationLink link in item.Links)
                    {
                        Links.Add(link.Uri.ToString());
                    }

                    //ID
                    IDs.Add(item.Id.ToString());

                    //Updated
                    Updateds.Add(item.LastUpdatedTime.ToString());

                    //Content
                    Contents.Add(item.Content.ToString());

                    //Titles
                    Titles.Add(item.Title.Text.ToString());
                    //Titles & Links
                    if (!TitlesLinks.ContainsKey(item.Title.ToString().Trim()))
                    {
                        TitlesLinks.Add(item.Title.Text.ToString().Trim(), Links);
                    }

                    //Add entry
                    Entries.Add(new Entry(authors, categories, item.Content.ToString(), item.Id.ToString(), Links, item.LastUpdatedTime.ToString(), item.Title.ToString()));
                }
            }
            catch (Exception e) { throw e; }
        }
Beispiel #2
0
        //Parse
        private void ParseRSS()
        {
            try
            {
                XmlDocument rssXmlDoc = new XmlDocument();
                // Load the RSS file from the RSS URL
                rssXmlDoc.Load(URL);
                //Store initial values - title and link
                XmlNode TL = rssXmlDoc.SelectSingleNode("rss/channel");
                this.Title         = TL.SelectSingleNode("title").InnerText.Trim();
                this.Link          = TL.SelectSingleNode("link").InnerText.Trim();
                this.Description   = TL.SelectSingleNode("description").InnerText.Trim();
                this.Language      = TL.SelectSingleNode("language").InnerText.Trim();
                this.Copyright     = TL.SelectSingleNode("copyright").InnerText.Trim();
                this.PublishedDate = TL.SelectSingleNode("pubDate").InnerText.Trim();

                // Parse the Items in the RSS file
                XmlNodeList         rssNodes = rssXmlDoc.SelectNodes("rss/channel/item");
                XmlNamespaceManager dcMgr    = new XmlNamespaceManager(rssXmlDoc.NameTable);
                dcMgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/");
                foreach (XmlNode rssNode in rssNodes)
                {
                    //Title
                    XmlNode rssSubNode = rssNode.SelectSingleNode("title");
                    string  title      = rssSubNode != null ? rssSubNode.InnerText : "";

                    //Link/Url
                    rssSubNode = rssNode.SelectSingleNode("link");
                    string link = rssSubNode != null ? rssSubNode.InnerText : "";

                    //Description
                    rssSubNode = rssNode.SelectSingleNode("description");
                    string description = rssSubNode != null ? rssSubNode.InnerText : "";

                    //Published date
                    rssSubNode = rssNode.SelectSingleNode("pubDate");
                    string pubDate = rssSubNode != null ? rssSubNode.InnerText : "";

                    //Creator
                    rssSubNode = rssNode.SelectSingleNode("dc:creator", dcMgr);
                    string creator = rssSubNode != null ? rssSubNode.InnerText : "";

                    //Date
                    rssSubNode = rssNode.SelectSingleNode("dc:date", dcMgr);
                    string date = rssSubNode != null ? rssSubNode.InnerText : "";

                    //Categories
                    List <Item.Category> categories = new List <Item.Category>();
                    foreach (XmlNode c in rssNode.SelectNodes("category"))
                    {
                        categories.Add(new Item.Category(c.Attributes["domain"].Value, c.InnerText.Trim()));
                    }

                    Titles.Add(title);
                    Links.Add(link);
                    Descriptions.Add(description);
                    PublishedDates.Add(pubDate);
                    Creators.Add(creator);
                    Dates.Add(date);
                    TitlesLinks.Add(title + " - " + link);

                    Items.Add(new Item(title, link, description, pubDate, creator, date, categories));
                }
            }
            catch (Exception e) { throw e; }
        }