【问题标题】:SyndicationFeed & SyndicationItem LastUpdatedTimeSyndicationFeed & SyndicationItem LastUpdatedTime
【发布时间】:2012-11-04 21:04:14
【问题描述】:

我正在尝试使用 SyndicationFeed 类从提要中获取内容,但对于某些提要它可以正常工作,但对于其他提要则不行。

例如,当我想从 http://www.alistapart.com/site/rss 获取提要时,所有提要项和提要本身的 LastUpdatedTime 值为 01-01-0001。
有什么我需要做的吗?还是 SyndicationFeed 不支持所有网站都可以读取所有信息?

我正在使用的一些示例代码:

var feed = SyndicationFeed.Load(XmlReader.Create("http://www.alistapart.com/site/rss"));
var feedPosts = feed.Items; // here all feedPosts have the invalid LastUpdatedTime, but if i go to the website i can see that there is actually one

【问题讨论】:

  • 您是从 RSS 提要还是从 Atom 拉取?字段名称是否相同?尝试手动解析提要中的日期/时间,看看你得到了什么。
  • 我不应该解析任何东西,这个类的想法是它为你完成了这项工作......我当然可以解析它,但我不想为它创建一个自定义解析器每种类型的饲料

标签: c# .net rss


【解决方案1】:

您正在查看LastUpdatedTime,而您提到的RSS 中的日期不是LastUpdatedTime,也不是更常见的日期pubDate。注意命名空间"http://purl.org/dc/elements/1.1/"

这些元素中的大部分都是可选的,您必须能够在没有它们的情况下生活或使用替代元素。

我创建了一个 Podcast 软件,但我发现 SyndicationFeed 的实现非常糟糕且脆弱,无法处理现实世界中的各种日期。

更新

有没有办法使用框架的 类来解析这个非标准 属性?

是的,看看Element Extensions

【讨论】:

  • 有没有办法使用框架的类来解析这个非标准属性?我只需要发布日期和其他一些东西(通常提要的内容和标题总是在那里)。如果没有,你有什么建议?
猜你喜欢
  • 2010-09-24
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
  • 2014-06-18
相关资源
最近更新 更多