14

我正在尝试将 RSS 提要的内容提取到可以在代码中进行操作的对象中。看起来 .NET 3.5 中的 SyndicationFeed 和 SyndicationItem 类可以满足我的需要,除了一件事。每次我尝试使用 SyndicationFeed 类读取 RSS 提要的内容时,每个 SyndicationItem 的 .Content 元素都是空的。

我已经通过 FeedValidator 运行了我的提要,并尝试使用来自其他几个来源的提要,但无济于事。

XmlReader xr = XmlReader.Create("http://shortordercode.com/feed/");
SyndicationFeed feed = SyndicationFeed.Load(xr);

foreach (SyndicationItem item in feed.Items)
{
    Console.WriteLine(item.Title.Text);
    Console.WriteLine(item.Content.ToString());
}

Console.ReadLine();

我怀疑我可能只是在某个地方遗漏了一步,但我似乎找不到关于如何使用这些类来使用 RSS 提要的好的教程。

编辑:感谢 SLaks,我发现问题在于 WordPress 用作内容标签。这似乎不是 WP Atom 提要的问题,所以我现在将其作为解决方案。谢谢斯拉克斯!

4

4 回答 4

15

这应该为您获取内容:

SyndicationFeed feed = SyndicationFeed.Load(reader);

string content = feed.ElementExtensions.ReadElementExtensions<string>("encoded", "http://purl.org/rss/1.0/modules/content/")
于 2011-01-04T18:27:22.653 回答
6

这是因为它是内容:编码而不是内容。要阅读这种情况下的内容,我将使用它:

    string content="";
    foreach (SyndicationElementExtension ext in item.ElementExtensions)
    {
        if (ext.GetObject<XElement>().Name.LocalName == "encoded")
            content = ext.GetObject<XElement>().Value;
    }
于 2011-06-08T14:35:01.310 回答
5

看看我做了什么:

    XmlReader reader = XmlReader.Create("http://kwead.com/blog/?feed=atom");
    SyndicationFeed feed = SyndicationFeed.Load(reader);
    reader.Close();

    foreach (SyndicationItem item in feed.Items)
    {
        string data = item.PublishDate.ToString();
        DateTime dt = Convert.ToDateTime(data);

        string titulo = " - " + item.Title.Text + "<br>";
        string conteudo = ((TextSyndicationContent)item.Content).Text;

        Response.Write(dt.ToString("d"));
        Response.Write(titulo);
        Response.Write(conteudo);
     }
于 2010-05-29T19:06:35.967 回答
1

使用该Summary物业。

您链接到的 RSS 提要将其内容放入<description>元素中。
如文档所述,RSS 提要的<description>元素映射到Summary属性。

于 2010-03-15T01:24:08.960 回答