C# Xml 序列化的大用途?

C# Xml Serialization big purpose?

我只是想知道 XML 序列化。如果我理解正确,使用它的主要原因是它可以让您更轻松地传输对象数据,对吗?另外,我尝试使用构造函数序列化数据,但它说您只能序列化 "parameterless" 的数据。问题是我喜欢构造函数,因为它允许我拥有例如一个玩家 class,并且添加一个具有所有属性的新玩家比必须一个一个地设置所有属性更有效率。 所以这里的大问题是,XML 序列化的 BIG 目的是什么,使用它的方法是什么?我看到它的方式是它给我的代码增加了另一个层次的复杂性,因为我现在需要一个 class 来序列化我的数据。有人可以解释一下吗?!

序列化用于以某种方式存储对象表示(在磁盘文件上、在线{网络传输}上、HTTP 会话上、数据库上)。 XML连载只是连载的一种。

你需要一个无参数的构造函数来支持序列化的原因是,AUTO DESERIALIZER 需要创建一个 EMPTY(没有 o 少数据)class 在开始用相应的数据填充它之前。

您不需要使用 ONE WAY 或 THE OTHER,因为您可以有一个带有多个构造函数的 class(无参数的一个将用于反序列化,您可以使用另一个在代码中需要的任何位置)。

如果你说的是序列化的总体目的,严格来说,序列化(注意我说的是"serialization," 不是 "XML Serialization" - 更多关于在一秒钟内)不仅使运输物体更容易,它是唯一运输物体的方式。

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

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

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

如果最后一点听起来有点奇怪(它们被广泛使用是因为它们被广泛使用),标准就其本质而言往往具有强大的网络效应。换句话说,越多人适应它们就越有用;例如,只有当您实际上可以使用电子邮件与其他人联系时,电子邮件才有用 - 如果您是唯一一个使用电子邮件的人,那么电子邮件就没有一点用处。

许多标准和技术之所以会比竞争对手更胜一筹,是因为它们拥有更多的早期适配器,而不是因为它们必然在技术上更胜一筹。例如,即使有人可以清楚地证明 OS X 是 "better" 操作系统而不是 Windows,也没关系,因为为 Windows 开发的软件要多得多,而且人们尝试切换到 OS X 的成本会高得令人望而却步。(您可以针对令牌环与以太网提出类似的论点)。