C# 什么时候应该使用XML序列化?

C# 什么时候应该使用XML序列化?,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我一直在阅读XMLserialization,据我所知,这是一种获取对象并将状态持久化到文件中的方法。至于实现,它看起来很直截了当,而且应用它似乎需要大量资源。什么时候应该使用XML序列化?有什么好处?什么情况下使用此选项最有帮助 这只是个人的经验-XML序列化对web服务很有好处。 此外,如果您想在不使用正在编写的应用程序(即第三方应用程序)的情况下修改(或允许修改)正在存储的对象/文件,XML可能是一个不错的选择。它有利于不同系统之间的通信。例如,使用Java应用程序和C#应用程序,允许它们

我一直在阅读
XML
serialization,据我所知,这是一种获取对象并将状态持久化到文件中的方法。至于实现,它看起来很直截了当,而且应用它似乎需要大量资源。什么时候应该使用
XML
序列化?有什么好处?什么情况下使用此选项最有帮助

这只是个人的经验-XML序列化对web服务很有好处。
此外,如果您想在不使用正在编写的应用程序(即第三方应用程序)的情况下修改(或允许修改)正在存储的对象/文件,XML可能是一个不错的选择。

它有利于不同系统之间的通信。例如,使用Java应用程序和C#应用程序,允许它们通过Web服务与可序列化的XML对象进行通信。这两个应用程序都理解XML,并且不涉及其他语言的细节。是的,虽然您可以前后触发字符串,但XML为我们提供了强大的键入和模式验证功能。

您在文章中回答了一些问题。它对于持久化对象的状态非常有用。我在应用程序中使用过它来保存用户设置。这也是一种向其他系统发送数据的好方法,因为它是标准化的。需要记住的一件重要事情是,它很容易让人阅读。这可能是好事,也可能是坏事,这取决于你的情况。如果您不想让其他人能够理解它,您可能需要考虑对其进行加密,或者使用加密二进制序列化。 编辑:

另一个值得一提的问题是.NET实现的
XMLSerializer
只序列化对象中的公共成员。如果需要持久化私有或受保护的成员,则需要使用自定义序列化程序或使用其他形式的序列化。

将对象持久化为XML的唯一方法不是.NET
XmlSerializer
类。较新的
DataContractSerializer
速度更快,并且还允许将对象持久化为更紧凑的XML二进制形式

如今,
XmlSerializer
只得到了有限的bug修复,部分原因是如此多的代码依赖于其工作方式的精确细节,部分原因是它与ASMX web服务相关,而微软认为ASMX web服务是一项“遗留技术”


DataContractSerializer的情况并非如此,它仍然是WCF的一个活跃而重要的组成部分。

我使用HttpWebRequest发送了一个我编写的class类型的对象数组,因此我不能将其作为对象发送,因为我混合了HttpWebRequest+Soap(即我编写的),在Soap中,不能发送字符串、int等非预定义对象


因此,我使用XML序列化将我的对象转换为XML字符串,并通过HttpWebRequest发送它。

好的……但您什么时候会使用它?很高兴知道不同的版本,谢谢你让我知道。因此,从您所说的,请将我的时间花在DataContractSerializer上?是的,除非您需要完全控制XML的格式,否则请使用
DataContractSerializer
。它更快更灵活。例如,它可以序列化私有字段,
XmlSerializer
将忽略这些字段。谢谢,这正是我要找的。非常有趣。因此,它应该用于与其他语言通信,并提供验证数据的好方法。非常感谢。