gpt4 book ai didi

C# SyndicationFeed - RSS 解析日期问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:32:51 24 4
gpt4 key购买 nike

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

SyndicationFeed feed = SyndicationFeed.Load(XmlReader.Create("http://rsslink"));

例如,此 RSS 工作正常并且被无误地接受:http://kjellochklortanten.libsyn.com/rss

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

An error occurred when parsing a DateTime-value in XML

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

任何知道可能导致此错误的线索的 C#-ninja?

提前致谢!

最佳答案

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

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

但是,提要中的 lastBuildDate 是:

2014 年 5 月 2 日星期五 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);

该代码适用于两种提要。

海吉达

关于C# SyndicationFeed - RSS 解析日期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com