我使用SyndicationFeed
从不同的rss源检索一些数据。然而,当我试图阅读一个RSS时,我遇到了一个问题,据我所知,它与那些工作的元素和数据是相同的。
SyndicationFeed feed = SyndicationFeed.Load(XmlReader.Create("http://rsslink"));
例如,这个RSS工作得很好,没有错误:http://kjellochklortanten.libsyn.com/rss
虽然此RSS: http://feeds.feedburner.com/tedtalks_audio导致SyndicationFeed
抛出错误(这是从瑞典语翻译过来的):
解析XML中的datetime值时发生错误
我已经看了两个提要的日期,在我看来它们是相同的。
有没有c#高手知道是什么导致了这个错误?
提前感谢!
出现此问题是因为第二个提要中使用的日期格式。SyndicationFeed。Load方法希望接收标准格式的提要。以下是标准格式的示例:
Mon, 05 Oct 2009 08:00:06 GMT
但是,提要中的lastBuildDate是:星期五,2014年5月2日04:58:16 UTC
要解决这个问题,可以创建一个识别该格式的自定义XML阅读器。复制MyXmlReader的整个代码并替换
const string CustomUtcDateTimeFormat = "ddd MMM dd HH:mm:ss Z yyyy";
const string CustomUtcDateTimeFormat = "ddd, dd MMM yyyy HH:mm:ss 'UTC'";
现在使用
//var feed = SyndicationFeed.Load(XmlReader.Create("http://feeds.feedburner.com/tedtalks_audio"));
XmlReader r = new MyXmlReader("http://feeds.feedburner.com/tedtalks_audio");
var feed = SyndicationFeed.Load(r);
该代码将适用于两个提要。
Hej da