我正在使用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?
提前致谢!
答案 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