构建一个简单的RSS阅读器,检索内容

时间:2012-06-13 13:45:56

标签: c# rss syndication-feed

我正在尝试使用SyndicationFeed类创建一个简单的RSS阅读器。

有一些标准代码,例如<title><link><description> ......它们没有任何问题。

但还有一些其他标签。例如,在WordPress创建的this feed中,有<content:encoded>个标记。我认为其他网站的内容部分可能还有其他标签。正确?

我想知道,如何找到每个帖子的主要内容,有没有标准?我应该找哪些标签?

(例如,某个网站可能会使用<content:encoded>但其他一些网站只能使用<description>或某人使用其他标准...我不知道如何检索主< / strong>帖子的内容)

P.S:我正在使用此代码测试我的简单RSS阅读器:

        var reader = XmlReader.Create("http://feed.2barnamenevis.com/2barnamenevis");
        var feed = SyndicationFeed.Load(reader);

        string s = "";
        foreach (SyndicationItem i in feed.Items)
        {
            s += i.Title.Text + "<br />" + i.Summary.Text + "<br />" + i.PublishDate.ToString() + "<br />";
            foreach (SyndicationElementExtension extension in i.ElementExtensions)
            {
                XElement ele = extension.GetObject<XElement>();
                s += ele.Name + " :: " + ele.Value + "<br />";
            }
            s += "<hr />";
        }
        return s;

3 个答案:

答案 0 :(得分:3)

根据我们在评论中的讨论,我可能会建议与第三方供应商合作,而不是从头开始构建 - ArgoticRSS.NET看起来都很有希望。

答案 1 :(得分:0)

取决于您想要支持的内容。内容元素不是RSS2.0的一部分,但属于Atom(rss 4287)。

阅读RSS2.0规范http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt 阅读Atom规范http://tools.ietf.org/html/rfc4287

答案 2 :(得分:0)

我找到了Argotic联合框架(感谢JoeEnos)。

Argotic有许多扩展,可用于处理非标准的元素。

例如,您可以使用Argotic.Extensions.Core.SiteSummaryContentSyndicationExtension来检索<content:encoded>。您可以看到示例here。 (如果该示例为内容返回null,则应使用MyRssItem.Description

其他一些有用的扩展程序是WellFormedWebCommentsSyndicationExtension(用于检索评论供稿网址)和SiteSummarySlashSyndicationExtension(用于检索评论计数)。