C#Xml序列化有什么大用途?

C#Xml序列化有什么大用途?,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我只是想知道XML序列化。如果我理解正确,那么使用它的主要原因是它可以让您更轻松地传输对象数据,对吗?此外,我尝试使用构造函数序列化数据,但它指出只能序列化“无参数”的数据。我喜欢构造函数,因为它允许我有一个Player类,并且添加一个具有所有属性的新Player比逐个设置所有属性更有效率。 所以这里的大问题是,XML序列化的主要目的是什么,使用它的方法是什么?我的看法是,它给我的代码增加了另一个层次的复杂性,因为我现在需要一个类来序列化我的数据。有人能给我点启示吗 序列化用于以某种方式存储对象

我只是想知道XML序列化。如果我理解正确,那么使用它的主要原因是它可以让您更轻松地传输对象数据,对吗?此外,我尝试使用构造函数序列化数据,但它指出只能序列化“无参数”的数据。我喜欢构造函数,因为它允许我有一个Player类,并且添加一个具有所有属性的新Player比逐个设置所有属性更有效率。
所以这里的大问题是,XML序列化的主要目的是什么,使用它的方法是什么?我的看法是,它给我的代码增加了另一个层次的复杂性,因为我现在需要一个类来序列化我的数据。有人能给我点启示吗

序列化用于以某种方式存储对象表示(在磁盘文件上、在wire{network transportation}上、在HTTP会话上、在数据库上)。XML序列化只是序列化的一种类型

您需要无参数构造函数来支持序列化的原因是,自动反序列化程序需要在开始使用相应的数据填充类之前创建一个空(没有太多数据)类


您不需要使用这种或那种方式,因为您可以拥有一个具有多个构造函数的类(在反序列化时使用参数较少的一个,并且您可以在代码中需要的任何地方使用另一个)。

序列化是为了以某种方式存储对象表示(在磁盘文件上,在有线{network transportation},在HTTP会话上,在数据库上)。XML序列化只是序列化的一种类型

您需要无参数构造函数来支持序列化的原因是,自动反序列化程序需要在开始使用相应的数据填充类之前创建一个空(没有太多数据)类


您不需要使用这种或那种方法,因为您可以拥有一个具有多个构造函数的类(无参数的构造函数将用于反序列化,并且您可以在代码中需要的任何地方使用另一个构造函数)。

如果您谈论的是序列化的总体目的,严格地说,就是序列化(请注意,我说过“序列化”,而不是“XML序列化”-稍后再详细介绍)不仅使传输对象更容易,而且是传输对象的唯一方法

正如Pablo Santa Cruz的回答中所指出的,XML是可以序列化数据的多种方法之一。如果要在某处保存或发送数据,根据定义,首先必须有某种方法来表示它。序列化基本上意味着您以某种指定的格式表示对象状态。反序列化则相反-给定某种表示重新定义对象状态,重建原始对象状态

从这个意义上讲,XML序列化、以某种方式将对象状态保存到数据库、将其保存为JSON、以某种二进制格式保存以及以某种XML格式保存都是序列化的示例(因为您以预定义的格式表示对象状态以备以后使用)

虽然任何定义的格式在技术上都可以序列化,但有几种标准的方法可以实现序列化。XML和JSON是迄今为止最常见的格式,因为它们是标准化的,易于解析,易于约束(例如使用XML模式),受到库的广泛支持,可以相对人可读(这使得调试更容易),它们被广泛使用

如果最后一点听起来有点奇怪(它们被广泛使用是因为它们被广泛使用),从本质上讲,标准往往具有强大的网络效应。换句话说,适应标准的人越多,标准就越有用;例如,只有当你能够真正使用电子邮件与其他人联系时,电子邮件才有用——如果你是唯一一个使用电子邮件的人,那么电子邮件甚至没有一点用处


许多标准和技术之所以能够战胜竞争对手,更多是因为它们拥有更多的早期适配器,而不是因为它们在技术上必然优越。例如,即使有人能够清楚地证明OSX是“更好的”“与Windows操作系统相比,这并不重要,因为为Windows开发的软件多得多,而且人们尝试切换到OS X的成本高得让人望而却步。(你可以对令牌环与以太网进行类似的论证)。

如果你说的是序列化的总体目的,严格来说,序列化(请注意,我说的是“序列化”,而不是“XML序列化”-稍后将详细介绍)不仅使传输对象更容易,而且是传输对象的唯一方法

正如Pablo Santa Cruz的回答所指出的,XML是可以序列化数据的多种方法之一。如果您要在某处保存或发送数据,根据定义,您必须首先有某种方式来表示它。序列化基本上意味着以某种指定的格式表示对象状态。反序列化是相反的-给定对象状态的某种表示,重构原始对象状态

从这个意义上讲,XML序列化、以某种方式将对象状态保存到数据库、将其保存为JSON、以某种二进制格式保存以及以某种XML格式保存都是序列化的示例(因为您以预定义的格式表示对象状态以备以后使用)

虽然从技术上讲,任何定义的格式都可以序列化,但有几种标准方法可以做到这一点。到目前为止,XML和JSON是最常见的格式,因为它们是标准化的、易于解析的、易于约束的(例如,使用XML模式),被库广泛支持,可以相对人可读(这使得调试更容易),并且被广泛使用

如果最后一点听起来有点奇怪(它们之所以被广泛使用是因为它们被广泛使用),那么标准本身就具有很强的网络效应。换言之,更多的人适应他们,我们也就越多