C#SyndicationFeed - RSS解析日期问题

时间:2014-05-02 00:24:14

标签: c# asp.net xml parsing datetime

我正在使用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值时发生错误

我查看了两个Feed中的日期,据我所知,它们是相同的。

任何可能导致此错误的C#-ninja?

提前致谢!

1 个答案:

答案 0 :(得分:4)

由于第二个Feed中使用的日期格式,会出现此问题。 SyndicationFeed.Load方法期望接收标准格式的订阅源。以下是标准格式的示例:

Mon,05 Oct 2009 08:00:06 GMT

但是,Feed中的lastBuildDate是:

Fri,02 May 2014 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);

该代码适用于两种Feed。

Hej da