# # का उपयोग करते हुए .net में आरएसएस फ़ीड पढ़ने का सबसे अच्छा तरीका


106

RSS फ़ीड्स पढ़ने का सबसे अच्छा तरीका क्या है ?

मैं XmlTextReaderइसे हासिल करने के लिए उपयोग कर रहा हूं । क्या इसे करने का कोई और सबसे अच्छा तरीका है?

XmlTextReader reader = new XmlTextReader(strURL);

DataSet ds = new DataSet();
ds.ReadXml(reader);

RSS फ़ीड का उपयोग करके पढ़ने के बाद XmlTextReader, क्या कोई तरीका है जिससे मैं ListItemइसके बजाय डेटा को पॉप्युलेट कर सकता हूं DataSet?

यहां छवि विवरण दर्ज करें

जवाबों:


176

System.ServiceModelसंदर्भों में जोड़ें

का उपयोग कर 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;
    ...                
}

13
यह विद्वता है। बहुत बढ़िया और रसीला। आपको System.Xml का उपयोग करने की भी आवश्यकता है; लेकिन यह काफी स्पष्ट है। ब्लॉगर के लिए url इस समय RSS 2.0 के लिए " blogname.blogspot.com/feeds/posts/default " (एटम 1.0) और " blogname.blogspot.com/feeds/posts/default?alts " है। SyndicationItem आइटम में आपके द्वारा आवश्यक सभी आइटम गुण हैं। बस दृश्य स्टूडियो डीबगर में ऑब्जेक्ट की जांच करें और रोशन किया जाए।
गुप्तवार्ता

क्या हम xmlTextReader का उपयोग xmlreader के बजाय किसी भी प्रदर्शन अंतर से कर सकते हैं?
ड्रैगन

1
छोटा एवं सुन्दर। धन्यवाद!
बोगदान डोकिन

8
.Net कोर के लिए, जिस NuGet पैकेज को आप इसका उपयोग करना चाहते हैं, वह हैSystem.ServiceModel.Syndication
adam0101

2019 के लिए यह हर बार चल रहा है जब मैं एकमात्र संस्करण का उपयोग करने का प्रयास करता हूं जो कि प्रीलेरेज है।
क्लेरेंस

11

यह एक पुरानी पोस्ट है, लेकिन कुछ समय के लिए लोगों को बचाने के लिए यदि आप यहां आते हैं जैसे मैंने किया था, तो मेरा सुझाव है कि आपको CodeHollow.FeedReader पैकेज पर एक नज़र है जो RSS संस्करणों की एक विस्तृत श्रृंखला का समर्थन करता है, उपयोग करना आसान है और अधिक मजबूत लगता है । https://github.com/codehollow/FeedReader



3

इसे इस्तेमाल करो :

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

अपडेट: यह केवल UWP - विंडोज कम्युनिटी टूलकिट के साथ सपोर्ट करता है

अब बहुत आसान तरीका है। आप RsPParser वर्ग का उपयोग कर सकते हैं । नमूना कोड नीचे दिया गया है।

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}");
        }
    }
}

गैर-यूडब्ल्यूपी के लिए नामस्थान से सिंडिकेशन का उपयोग करें System.ServiceModel.Syndicationजैसा कि अन्य ने सुझाव दिया है।

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;
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.