Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化RSS源的容器?_C#_.net_Serialization_Rss_Feed - Fatal编程技术网

C# 序列化RSS源的容器?

C# 序列化RSS源的容器?,c#,.net,serialization,rss,feed,C#,.net,Serialization,Rss,Feed,我正在为RSS客户端做一个项目。现在,我正在使用SyndicationFeed和XmlReader检索一个提要,并将其添加到列表中: SyndicationFeed feed = SyndicationFeed.Load( XmlReader.Create("SOME URL TO A FEED")); List<SyndicationFeed> feeds = new List<SyndicationFeed>(); feeds.Add(feed); Synd

我正在为RSS客户端做一个项目。现在,我正在使用
SyndicationFeed
XmlReader
检索一个提要,并将其添加到列表中:

SyndicationFeed feed = SyndicationFeed.Load(
    XmlReader.Create("SOME URL TO A FEED"));
List<SyndicationFeed> feeds = new List<SyndicationFeed>();
feeds.Add(feed);
SyndicationFeed=SyndicationFeed.Load(
Create(“某个提要的URL”);
列表提要=新列表();
feed.Add(feed);

SyndicationFeed
及其大多数属性都不可序列化。我需要能够保存饲料和他们各自的项目时,我的程序关闭。我有一个使用实体框架的数据库解决方案,但我想避开这个问题。所以我的下一个想法是简单地用所有提要序列化容器,但这是行不通的。我应该编写一个serializabl类来模仿
SyndicationFeed
及其属性并执行某种装箱和拆箱操作,还是有更好的方法?

SyndicationFeed类有a和a,这两个类都有一个实例,您可以使用任何东西作为其基础存储

就我个人而言,我会使用
SaveAsAtom10
方法,因为我相信Atom是更丰富的格式

也就是说,通过在自己的命名空间中创建根元素和子元素,然后将每个提要的内容作为子元素,您可以轻松地将其持久化到更大的单个文档中,如下所示:

<feeds xmlns="http://tempuri.org/MyFeedContainer">
    <feed>
        <!-- Atom feed -->
    </feed>
    <feed>
        <!-- Rss feed -->
    </feed>
    <!-- And so on.. -->   
</feeds>

我将使用和实例来处理上面的容器创建,因为使用这些类时名称空间管理要容易得多。另外,
XElement
类公开a和a,这将分别公开
XmlWriter
XmlReader
实例,然后可以将它们传递给
SaveAsAtom
/
SaveAsRss20
方法

然而,我想让你记住,每件物品都要分开存放;根据您拥有的提要数量,创建一个大型超级文档可能会消耗大量资源,具体取决于您的需要。可以独立访问的单个实体中持久化的单个文档实例处理起来可能会更高效


您仍然可以使用
SaveAsAtom10
SaveAsRss20
方法来序列化提要。

谢谢。那么就把每个提要都保存在磁盘上自己的文档中?@Pete:我就是这么做的。我可以这样命名它:您知道如何检索特定的提要(如果需要),或者如果需要整体处理它们,您可以只枚举目录中的文件。