4

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

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

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

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

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

PS:我正在使用此代码来测试我的简单 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;
4

3 回答 3

3

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

于 2012-06-14T05:48:46.523 回答
0

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

阅读 RSS2.0 规范http://cyber.law.harvard.edu/rss/rss.html#hrelementsOfLtitemgt 阅读 Atom 规范https://www.rfc-editor.org/rfc/rfc4287

于 2012-06-13T14:45:12.027 回答
0

我找到了 Argotic Syndication Framework(感谢 JoeEnos)。

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

例如,您可以Argotic.Extensions.Core.SiteSummaryContentSyndicationExtension用于检索<content:encoded>. 你可以在这里看到一个例子。(如果该示例返回null内容,您应该简单地使用MyRssItem.Description

其他一些有用的扩展是WellFormedWebCommentsSyndicationExtension(用于检索评论提要 url)和SiteSummarySlashSyndicationExtension(用于检索评论计数)。

于 2012-06-14T04:40:40.733 回答