首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# SyndicationFeed - RSS解析日期问题

C# SyndicationFeed - RSS解析日期问题
EN

Stack Overflow用户
提问于 2014-05-02 00:24:13
回答 1查看 2.6K关注 0票数 2

我正在使用SyndicationFeed从不同的RSS源检索一些数据。然而,我只是在尝试阅读RSS时遇到了一个问题,据我所见,RSS的元素和数据与实际工作的元素和数据相同。

代码语言:javascript
复制
SyndicationFeed feed = SyndicationFeed.Load(XmlReader.Create("http://rsslink"));

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

虽然这个RSS:音频会导致SyndicationFeed抛出一个错误(这是从瑞典翻译过来的):

在XML中解析日期时间值时发生错误。

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

任何有线索的C#-忍者是什么导致了这个错误?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 08:36:00

发生此问题的原因是第二个提要中使用的日期格式。SyndicationFeed.Load方法期望接收标准格式的提要。以下是标准格式的示例:

2009年10月5日星期一08:00:06格林尼治时间

但是,提要中的lastBuildDate是:

2014年5月2日星期五04:58:16世界协调时

要解决此问题,请创建一个自定义XML读取器来识别该格式。复制MyXmlReader的全部代码并替换

代码语言:javascript
复制
const string CustomUtcDateTimeFormat = "ddd MMM dd HH:mm:ss Z yyyy";  

通过

代码语言:javascript
复制
const string CustomUtcDateTimeFormat = "ddd, dd MMM yyyy HH:mm:ss 'UTC'";

现在用它作为

代码语言:javascript
复制
//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);

这段代码对两个提要都有效。

赫伊达

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23418875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档