c# SyndicationFeed - RSS解析日期问题



我使用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

相关内容

  • 没有找到相关文章

最新更新