我使用下面的代码解析原子Feed:
using(var reader = new MyXmlReader("http://tutsplus.com/courses.atom")) {
var doc = SyndicationFeed.Load(reader);
var newFeed = new AtomFeed {
Id = doc.Id,
Title = doc.Title.Text,
Url = url,
UpdateDate = DateTime.Now
};
XNamespace dc = "http://www.w3.org/2005/Atom";
newFeed.AtomEntries = (from entry in doc.Items
select new AtomEntry {
Id = entry.Id,
Links = entry.Links,
Title = entry.Title.Text,
Content = entry.Content.ToString(),
PublishDate = entry.PublishDate.DateTime,
UpdatedDate = entry.LastUpdatedTime.DateTime,
Authors = entry.Authors
}).ToList();
}
似乎我的Feed中字符串未被识别为有效的DateTime。我也知道(+)SyndicationFeed.Load
方法希望接收标准格式的Feed,如下所示:Mon, 05 Oct 2015 08:00:06 GMT
。所以我创建了custom XML reader来识别不同的日期格式。但仍有同样的错误!
任何的想法?
答案 0 :(得分:1)
当我尝试使用链接的自定义XML阅读器时,在解析“已发布”和“已更新”日期时,我也遇到了此错误。查看Atom10FeedFormatter
类的代码,它正在尝试以这些格式解析日期(DateFromString
方法)
const string Rfc3339LocalDateTimeFormat = "yyyy-MM-ddTHH:mm:sszzz";
const string Rfc3339UTCDateTimeFormat = "yyyy-MM-ddTHH:mm:ssZ";
所以我在MyXmlReader
实现中更改了设置格式yyyy-MM-ddTHH:mm:ssZ
,然后对此日期解析一切都很好(我还必须在ReadStartElement
中更改元素名称以设置{ {1}}等于true,即已发布和更新。
readingDate