C# SyndicationFeed - RSS 解析日期问题

Sub*_*ive 1 c# xml asp.net datetime parsing

我正在使用SyndicationFeed从不同的 RSS 源检索一些数据。但是,我在尝试阅读 RSS 时遇到了一个问题,就我所见,该 RSS 与有效的元素和数据具有相同的元素和数据。

SyndicationFeed feed = SyndicationFeed.Load(XmlReader.Create("http://rsslink"));
Run Code Online (Sandbox Code Playgroud)

例如,这个 RSS 工作得很好并且被接受没有错误:http : //kjellochklortanten.libsyn.com/rss

虽然这个 RSS:http : //feeds.feedburner.com/tedtalks_audio导致SyndicationFeed抛出错误(这是从瑞典语翻译过来的):

解析 XML 中的 DateTime 值时出错

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

任何 C#-ninja 都知道可能导致此错误的原因?

提前致谢!

ale*_*lex 5

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

2009 年 10 月 5 日星期一 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";  
Run Code Online (Sandbox Code Playgroud)

经过

const string CustomUtcDateTimeFormat = "ddd, dd MMM yyyy HH:mm:ss 'UTC'";
Run Code Online (Sandbox Code Playgroud)

现在将其用作

//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);
Run Code Online (Sandbox Code Playgroud)

该代码适用于两个提要。

Hej DA