public List <SimpleFeedlyFeedItem> GetItems(string feedUrl, out Exception error)
        {
            Exception currentEx = null;
            List <SimpleFeedlyFeedItem> items = new List <SimpleFeedlyFeedItem>();

            try
            {
                var feed = CodeHollow.FeedReader.FeedReader.ReadAsync(feedUrl).GetAwaiter().GetResult();

                foreach (var item in feed.Items)
                {
                    var feedItem = new SimpleFeedlyFeedItem
                    {
                        Id             = item.Id,
                        Title          = string.IsNullOrWhiteSpace(item.Title) ? item.Link : item.Title,
                        Link           = item.Link,
                        Description    = item.Description,
                        PublishingDate = item.PublishingDate ?? DateTime.Now,
                        Author         = item.Author,
                        Content        = item.Content
                    };

                    items.Add(feedItem);
                }
            }
            catch (Exception ex)
            {
                currentEx = ex;
            }

            error = currentEx;
            return(items);
        }
 private static string GenerateFeedItemKey(SimpleFeedlyFeedItem item)
 {
     if (string.IsNullOrWhiteSpace(item.Id))
     {
         if (string.IsNullOrWhiteSpace(item.Link))
         {
             return(null);
         }
         else
         {
             return(item.Link);
         }
     }
     else
     {
         return(item.Id);
     }
 }
        public List <SimpleFeedlyFeedItem> GetItems(string feedUrl, out Exception error)
        {
            Exception currentEx = null;
            List <SimpleFeedlyFeedItem> items    = new List <SimpleFeedlyFeedItem>();
            XmlReaderSettings           settings = new XmlReaderSettings();

            settings.DtdProcessing = DtdProcessing.Parse;

            try
            {
                using (var reader = XmlReader.Create(feedUrl, settings))
                {
                    var feed = System.ServiceModel.Syndication.SyndicationFeed.Load(reader);
                    reader.Close();

                    foreach (System.ServiceModel.Syndication.SyndicationItem item in feed.Items)
                    {
                        var feedItem = new SimpleFeedlyFeedItem();

                        var link = item.Links.FirstOrDefault()?.Uri.ToString();
                        link = string.IsNullOrWhiteSpace(link) ? item.Id : link;

                        feedItem.Id             = item.Id;
                        feedItem.Title          = string.IsNullOrWhiteSpace(item.Title?.Text) ? link : item.Title.Text;
                        feedItem.Link           = link;
                        feedItem.Description    = item.Summary?.Text;
                        feedItem.PublishingDate = item.PublishDate.UtcDateTime;
                        feedItem.Author         = item.Authors.FirstOrDefault()?.Name ?? string.Empty;
                        feedItem.Content        = item.Content?.ToString();

                        //feedItem.XmlData = item.GetRss20Formatter().ToString();

                        items.Add(feedItem);
                    }
                }
            }
            catch (Exception ex)
            {
                currentEx = ex;
            }

            error = currentEx;
            return(items);
        }
        public List <SimpleFeedlyFeedItem> GetItems(string feedUrl, out Exception error)
        {
            Exception currentEx = null;
            List <SimpleFeedlyFeedItem> items = new List <SimpleFeedlyFeedItem>();

            try
            {
                var xmlString = string.Empty;
                using (WebClient client = new WebClient())
                {
                    var htmlData = client.DownloadData(feedUrl);
                    xmlString = System.Text.Encoding.UTF8.GetString(htmlData);

                    // ReplaceHexadecimalSymbols
                    string r = "[\x00-\x08\x0B\x0C\x0E-\x1F\x26]";
                    xmlString = Regex.Replace(xmlString, r, "", RegexOptions.Compiled);
                }

                XmlDocument rssXmlDoc = new XmlDocument();
                rssXmlDoc.LoadXml(xmlString);

                // Parse the Items in the RSS file
                XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item");

                var namespaceManager = new XmlNamespaceManager(rssXmlDoc.NameTable);
                var contentNamespace = rssXmlDoc.DocumentElement.GetAttribute("xmlns:content");
                namespaceManager.AddNamespace("content", contentNamespace);

                // Iterate through the items in the RSS file
                foreach (XmlNode rssNode in rssNodes)
                {
                    var feedItem = new SimpleFeedlyFeedItem();

                    XmlNode rssSubNode = rssNode.SelectSingleNode("link");
                    feedItem.Link = rssSubNode != null ? rssSubNode.InnerText : null;

                    rssSubNode     = rssNode.SelectSingleNode("title");
                    feedItem.Title = rssSubNode != null ? rssSubNode.InnerText : null;
                    feedItem.Title = string.IsNullOrWhiteSpace(feedItem.Title) ? feedItem.Link : feedItem.Title;

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

                    rssSubNode       = rssNode.SelectSingleNode("//content:encoded", namespaceManager);
                    feedItem.Content = rssSubNode != null ? rssSubNode.InnerText : null;

                    rssSubNode = rssNode.SelectSingleNode("pubDate");
                    DateTime pubDate = DateTime.Now;

                    if (rssSubNode != null)
                    {
                        if (DateTime.TryParse(rssSubNode.InnerText, out DateTime tmpDate))
                        {
                            pubDate = tmpDate;
                        }
                    }

                    feedItem.PublishingDate = pubDate;


                    //feedItem.XmlData = rssNode.InnerXml.ToString();

                    if (!string.IsNullOrWhiteSpace(feedItem.Link))
                    {
                        items.Add(feedItem);
                    }
                }
            }
            catch (Exception ex)
            {
                currentEx = ex;
            }

            error = currentEx;
            return(items);
        }