我正在使用SyndicationFeed从不同的RSS源检索一些数据。然而,我只是在尝试阅读RSS时遇到了一个问题,据我所见,RSS的元素和数据与实际工作的元素和数据相同。
SyndicationFeed feed = SyndicationFeed.Load(XmlReader.Create("http://rsslink"));例如,这个RSS工作得很好,并且没有错误地被接受:http://kjellochklortanten.libsyn.com/rss。
虽然这个RSS:音频会导致SyndicationFeed抛出一个错误(这是从瑞典翻译过来的):
在XML中解析日期时间值时发生错误。
我查看了两个提要中的日期,据我所知,它们是相同的。
任何有线索的C#-忍者是什么导致了这个错误?
提前感谢!
发布于 2014-05-02 08:36:00
发生此问题的原因是第二个提要中使用的日期格式。SyndicationFeed.Load方法期望接收标准格式的提要。以下是标准格式的示例:
2009年10月5日星期一08:00:06格林尼治时间
但是,提要中的lastBuildDate是:
2014年5月2日星期五04:58:16世界协调时
要解决此问题,请创建一个自定义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);这段代码对两个提要都有效。
赫伊达
https://stackoverflow.com/questions/23418875
复制相似问题