如何序列化SyndicationItem对象的集合?
问题描述:
我有我需要序列化的SyndicationItem对象的集合,但我不知道我如何去做这件事。建议?如何序列化SyndicationItem对象的集合?
IEnumberable<SyndicationItem> blogPosts = GetBlogPosts();
...
private IEnumerable<SyndicationItem> GetBlogPosts()
{
var query = Enumerable.Empty<SyndicationItem>();
foreach (string feed in Feeds)
{
try
{
using (XmlReader reader = XmlReader.Create(feed))
{
query = query.Union((from item in SyndicationFeed.Load(reader).Items
orderby item.PublishDate descending
select item).Take(NumberOfItemsToDisplay));
}
}
catch (Exception ex)
{
Console.WriteLine("Invalid Feed: {0} ({1})", feed, ex.Message);
}
}
query = query.OrderByDescending(i => i.PublishDate).Take(NumberOfItemsToDisplay);
return query;
}
答
如果你想序列化SyndicationItem,它有几个方法,你可以使用SaveAsRss20,SaveAsAtom10。要序列化收集,逐个迭代并将其写入一些流
SyndicationItem item = new SyndicationItem("Item Title", "Item Content", new Uri("http://Item/Alternate/Link"), "itemID", DateTimeOffset.Now);
XmlWriter writer = XmlWriter.Create("outfile.xml");
item.SaveAsRss20(writer);
writer.Close();
感谢您的建议。虽然这确实有效,但我认为这种方法对于我的需求是过分的。最后,我决定让我的Linq查询返回一组简单的POCO对象,因为我并不需要SyndicationItem提供的所有数据。 – eponymous23
如果我们需要SyndicationItem提供的所有数据,该怎么办? – Wingjam