예제 #1
0
        /// <summary>
        /// Starts loading the feed and initializing the reader for the feed type.
        /// </summary>
        /// <returns></returns>
        public async Task <ObservableCollection <RssSchema> > Load()
        {
            string xmlContent = await DownloadAsync();

            var doc  = XDocument.Parse(xmlContent);
            var type = BaseRssReader.GetFeedType(doc);

            BaseRssReader rssReader;

            if (type == RssType.Rss)
            {
                rssReader = new RssReader();
            }
            else
            {
                rssReader = new AtomReader();
            }

            return(rssReader.LoadFeed(doc));
        }
예제 #2
0
        /// <summary>
        /// Starts loading the feed and initializing the reader for the feed type.
        /// </summary>
        /// <returns></returns>
        public async Task <IEnumerable <RssSchema> > Load()
        {
            string xmlContent = await DownloadAsync(_uri);

            var doc = XDocument.Parse(xmlContent);

            if (doc.Declaration != null && doc.Declaration.Encoding != null)
            {
                if (!doc.Declaration.Encoding.EqualNoCase("UTF-8"))
                {
                    try
                    {
                        base.Encoding = Encoding.GetEncoding(doc.Declaration.Encoding);
                        xmlContent    = await DownloadAsync(_uri);

                        doc = XDocument.Parse(xmlContent);
                    }
                    catch { }
                }
            }

            var type = BaseRssReader.GetFeedType(doc);

            BaseRssReader rssReader;

            if (type == RssType.Rss)
            {
                rssReader = new RssReader();
            }
            else
            {
                rssReader = new AtomReader();
            }

            return(rssReader.LoadFeed(doc).Take(20));
        }