浅析C# XmlSerializer概念及作用

开发 后端
C# XmlSerializer是什么呢?通过这里对于C# XmlSerializer的介绍,希望你掌握C# XmlSerializer概念以及C# XmlSerializer的使用原理等等情况

谈到C# XmlSerializer类自然会联系到序列化的问题,那么我们首先明白序列化其实就是是将对象转换为容易传输的格式的过程。那么它是如何发挥作用的呢?让我们来一一讲述。

C# XmlSerializer类的理解

例如,可以序列化一个对象,然后使用 HTTP 通过Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

XML序列化仅将对象的公共字段和属性值序列化为 XML 流。XML 序列化不包括类型信息。例如,如果您有一个存在于 Library 命名空间中的 Book 对象,将不能保证它将会被反序列化为同一类型的对象。

注意:XML 序列化不转换方法、索引器、私有字段或只读属性(只读集合除外)。若要序列化对象的所有字段和属性(公共的和私有的),请使用 BinaryFormatter,而不要使用 XML 序列化。

C# XmlSerializer类的使用:

XML序列化中最主要的类是XmlSerializer类,它的最重要的方法是 Serialize 和 Deserialize 方法。XmlSerializer 生成的 XML 流符合万维网联合会 (http://www.w3.org/) XML 架构定义语言 (XSD) 1.0 的建议。另外,生成的数据类型符合标题为“XML Schema Part 2: Datatypes”(XML 架构第二部分:数据类型)的文档。

对象中的数据是用编程语言构造(如类、字段、属性、基元类型、数组,甚至 XmlElement 或 XmlAttribute 对象形式的嵌入 XML)来描述的。您可以创建自己的用属性批注的类,或者使用 XML 架构定义工具生成基于现有 XML 架构的类。

C# XmlSerializer类作用原理理解:

如果您有 XML 架构,就可运行 XML 架构定义工具生成一组强类型化为架构并用属性批注的类。当序列化这样的类的实例时,生成的 XML 符合 XML 架构。使用这样的类,就可针对容易操作的对象模型进行编程,同时确保生成的 XML 符合 XML 架构。这是使用 .NET Framework 中的其他类(如 XmlReader 和 XmlWriter 类)分析和写 XML 流的一种替换方法。(有关使用这些类的更多信息,请参见使用 .NET Framework 中的 XML。)这些类使您可以分析任何 XML 流。与此相反,当需要 XML 流符合已知的 XML 架构时,请使用 XmlSerializer。

属性控制由 XmlSerializer 类生成的 XML 流,使您可以设置 XML 流的 XML 命名空间、元素名、属性名等。有关这些属性和它们如何控制 XML 序列化的更多信息,请参见使用属性控制 XML 序列化。若想获得一个列示对所生成的 XML 起控制作用的那些属性的表,请参见控制 XML 序列化的属性。

XmlSerializer 类可进一步序列化对象并生成编码的 SOAP XML 流。生成的 XML 符合标题为“Simple Object Access Protocol (SOAP) 1.1”的万维网联合会文档的第 5 节。有关此过程的更多信息,请参见用 XML 序列化生成 SOAP 消息。

XmlSerializer 类生成由 XML Web services 创建和传递给 XML Web services 的 SOAP 消息。若要控制 SOAP 消息,可将属性应用于 XML Web services 文件 (.asmx) 中的类、返回值、参数和字段。您可以同时使用在“控制 XML 序列化的属性”中列出的属性和在“控制编码的 SOAP 序列化的属性”中列出的属性,因为 XML Web services 可以使用文本样式,也可以使用编码的 SOAP 样式。

C# XmlSerializer的相关内容就向你介绍到这里,希望对你了解和学习C# XmlSerializer有所帮助。

【编辑推荐】

  1. .NET不用控件实现文件夹监测系统
  2. 详解C#中不同类的类型
  3. 浅谈C#中标准Dispose模式的实现
  4. C#图片处理的3种高级实用方法
  5. C# 4.0新特性:协变与逆变中的编程思想
责任编辑:仲衡 来源: CSDN博客
相关推荐

2009-09-01 16:10:28

C#单元测试

2009-08-20 18:47:19

C#异步通信

2009-08-18 09:51:18

C#枚举类型

2009-08-24 15:28:19

C# 泛型方法

2009-08-24 17:39:21

C# 泛型集合

2009-09-09 16:53:49

C# XmlSeria序列化

2009-08-27 10:20:03

C# foreach语

2009-09-04 16:37:37

C# DES算法

2009-09-14 13:44:14

Lambda ExprC# Lambda

2009-08-25 18:16:02

.NET Framew.NET Framew

2009-09-02 10:58:02

C#动态数组

2009-08-20 19:08:30

C#异步调用

2009-08-27 17:11:44

C# Fluent I

2009-08-28 16:48:50

C#多态性

2009-08-12 10:37:13

C#运算符重载

2009-09-01 15:08:18

C#多态性

2009-09-11 11:16:53

C# Attribut

2009-09-09 10:47:29

C# CheckBox

2009-08-26 14:16:17

C# FrameWor

2010-09-03 11:24:49

CSS伪类
点赞
收藏

51CTO技术栈公众号