Best Way to read rss feed in .net Using C#

前端 未结 5 1551
小鲜肉
小鲜肉 2020-11-29 16:25

What is the best way to read RSS feeds?

I am using XmlTextReader to achieve this. Is there any other best way to do it?

XmlText         


        
相关标签:
5条回答
  • 2020-11-29 16:53

    Update: This supports only with UWP - Windows Community Toolkit

    There is a much easier way now. You can use the RssParser class. The sample code is given below.

    public async void ParseRSS()
    {
        string feed = null;
    
        using (var client = new HttpClient())
        {
            try
            {
                feed = await client.GetStringAsync("https://visualstudiomagazine.com/rss-feeds/news.aspx");
            }
            catch { }
        }
    
        if (feed != null)
        {
            var parser = new RssParser();
            var rss = parser.Parse(feed);
    
            foreach (var element in rss)
            {
                Console.WriteLine($"Title: {element.Title}");
                Console.WriteLine($"Summary: {element.Summary}");
            }
        }
    }
    

    For non-UWP use the Syndication from the namespace System.ServiceModel.Syndication as others suggested.

    public static IEnumerable <FeedItem> GetLatestFivePosts() {
        var reader = XmlReader.Create("https://sibeeshpassion.com/feed/");
        var feed = SyndicationFeed.Load(reader);
        reader.Close();
        return (from itm in feed.Items select new FeedItem {
            Title = itm.Title.Text, Link = itm.Id
        }).ToList().Take(5);
    }
    
    public class FeedItem {
        public string Title {
            get;
            set;
        }
        public string Link {
            get;
            set;
        }
    }
    
    0 讨论(0)
  • 2020-11-29 16:57

    This is an old post, but to save people some time if you get here now like I did, I suggest you have a look at the CodeHollow.FeedReader package which supports a wider range of RSS versions, is easier to use and seems more robust. https://github.com/codehollow/FeedReader

    0 讨论(0)
  • 2020-11-29 17:03

    Use this :

    private string GetAlbumRSS(SyndicationItem album)
        {
    
            string url = "";
            foreach (SyndicationElementExtension ext in album.ElementExtensions)
                if (ext.OuterName == "itemRSS") url = ext.GetObject<string>();
            return (url);
    
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string albumRSS;
            string url = "http://www.SomeSite.com/rss‎";
            XmlReader r = XmlReader.Create(url);
            SyndicationFeed albums = SyndicationFeed.Load(r);
            r.Close();
            foreach (SyndicationItem album in albums.Items)
            {
    
                cell.InnerHtml = cell.InnerHtml +string.Format("<br \'><a href='{0}'>{1}</a>", album.Links[0].Uri, album.Title.Text);
                albumRSS = GetAlbumRSS(album);
    
            }
    
    
    
        }
    
    0 讨论(0)
  • 2020-11-29 17:05

    Add System.ServiceModel in references

    Using SyndicationFeed:

    string url = "http://fooblog.com/feed";
    XmlReader reader = XmlReader.Create(url);
    SyndicationFeed feed = SyndicationFeed.Load(reader);
    reader.Close();
    foreach (SyndicationItem item in feed.Items)
    {
        String subject = item.Title.Text;    
        String summary = item.Summary.Text;
        ...                
    }
    
    0 讨论(0)
  • 2020-11-29 17:07

    You're looking for the SyndicationFeed class, which does exactly that.

    0 讨论(0)
提交回复
热议问题