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 都知道可能导致此错误的原因?
提前致谢!
由于在第二个提要中使用的日期格式,会出现此问题。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
归档时间: |
|
查看次数: |
2407 次 |
最近记录: |