C# 序列化与LINQ

C# 序列化与LINQ,c#,xml,C#,Xml,我目前正在编写一个应用程序来管理一些客户。客户之间有一些关系,比如订单。你可以想象这就像northwind数据库一样。我想将数据保存在xml文件中。我的应用程序应该读取、修改和保存数据。我认为有两种方法。第一种方法是使用XmlSerializer类保存、读取和修改数据。第二种方法是使用LINQ到XML进行操作。我所有的类都是用简单的C#类编写的。所以,我不确定。你怎么认为?我应该用什么来满足我的需要 提前谢谢 linqtoxml很适合查询XML文档 如果您正在序列化/反序列化一个对象,我将把它留

我目前正在编写一个应用程序来管理一些客户。客户之间有一些关系,比如订单。你可以想象这就像northwind数据库一样。我想将数据保存在xml文件中。我的应用程序应该读取、修改和保存数据。我认为有两种方法。第一种方法是使用XmlSerializer类保存、读取和修改数据。第二种方法是使用LINQ到XML进行操作。我所有的类都是用简单的C#类编写的。所以,我不确定。你怎么认为?我应该用什么来满足我的需要


提前谢谢

linqtoxml很适合查询XML文档


如果您正在序列化/反序列化一个对象,我将把它留给XmlSerializer类。

您真的确定要为此使用XML吗?您可以使用SQL Server Compact Edition使SQL Server功能内置到编译后的应用程序中,而无需外部占用空间。数据库是比使用XML描述的方式更好的选择。

在进行序列化时要考虑很多。尽管下面的内容与C++有关,但它讨论了序列化的一些并发症以及序列化时使用的数据结构。


另外,如果另一个应用程序将使用输出序列化,我会避免使用XmlSerializer类,并在考虑数据迁移和向后兼容性的情况下构建自己的模式。

Linq to XML,因此,如果您改变主意设置为EF或Linq to SQL,学习将很容易。

我建议您使用DataContractSerializer而不是XmlSerializer。XmlSerializer仍然受支持,但只修复了关键错误(请参阅2008年1月10日对的评论:

不幸的是,我们只是主动修复XmlSerializer和xsd.exe中对客户影响最大的问题。如果此问题造成业务影响,请与Microsoft产品支持服务部门联系,我们将乐于探索各种选项

唯一的缺点是XmlSerializer允许您详细控制XML的格式。如果您只打算将XML用于自己的目的,那么这并不重要,DataContractSerializer的改进速度和功能集应该对您有吸引力


顺便说一句,它允许您“两全其美”。它可以将数据序列化为XML的二进制形式,这种形式更紧凑,但仍然是XML,可以由XmlDictionaryReader类(XmlReader)读入.

我同意序列化,您应该使用XmlSerializer类。@贾斯汀·尼斯纳:您能谈谈您认为XmlSerializer在序列化方面优于LINQ的原因吗?此外,如果我的类定义以及XML架构不会改变,为什么不使用LINQ,因为对象将在s中序列化一直都是特定的结构?