kdm*_*ray 13 c# rss syndication-feed syndication-item
我正在尝试将RSS提要的内容提取到可以在代码中操作的对象中.看起来.NET 3.5中的SyndicationFeed和SyndicationItem类将完成我的需要,除了一件事.每次我尝试使用SyndicationFeed类读取RSS提要的内容时,每个SyndicationItem的.Content元素都为null.
我通过FeedValidator运行我的Feed,并尝试使用来自其他几个来源的Feed,但无济于事.
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();
Run Code Online (Sandbox Code Playgroud)
我怀疑我可能只是在某个地方错过了一个步骤,但我似乎无法找到关于如何使用这些类消费RSS提要的好教程.
编辑:感谢SLaks我已经发现问题是WordPress使用内容标签.这似乎不是WP Atom提要的问题所以我现在将其作为解决方案.谢谢SLaks!
Fra*_*han 12
这应该为您获取内容:
SyndicationFeed feed = SyndicationFeed.Load(reader);
string content = feed.ElementExtensions.ReadElementExtensions<string>("encoded", "http://purl.org/rss/1.0/modules/content/")
Run Code Online (Sandbox Code Playgroud)
这是因为它是内容:编码而不是内容.要阅读本案例中的内容,我将使用此:
string content="";
foreach (SyndicationElementExtension ext in item.ElementExtensions)
{
if (ext.GetObject<XElement>().Name.LocalName == "encoded")
content = ext.GetObject<XElement>().Value;
}
Run Code Online (Sandbox Code Playgroud)
小智 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);
}
Run Code Online (Sandbox Code Playgroud)