.NET对象的XML序列化和反序列化概念浅析

开发 后端
XML序列化和反序列化的概念是什么呢?在.NET下的XML序列化和反序列化实现主要用到什么样的类呢?那么本文就向你详细介绍具体的内容。

对于.NET对象的XML序列化和反序列化的理解我们首先来看看序列化的概念,什么是序列化呢?它是指一个对象的实例可以被保存成一个二进制串,当然,一旦被保存成二进制串,那么也就意味着可以保存成文本串了。

比如,一个计数器,数值为2,我们可以用字符串“2”表示。如果有个对象,叫做connter,当前值为2,那么可以序列化成“2”,反向的,也可以从“2”得到值为2的计数器实例。这样,关机时序列化它,开机时反序列化它,每次开机都是延续的。不会都是从头开始。

序列化概念的提出和实现,可以使我们的应用程序的设置信息保存和读取更加方便。序列化有很多好处,比如,在一台机器上产生一个实例,初始化完毕,然后可以序列化,通过网络传送到另一台机器,然后反序列化,得到对象实例,之后再执行某些业务逻辑,得到结果,再序列化,返回第一台机器,第一台机器得到对象实例,得到结果。

当前比较热火的web services使用soap协议,soap协议也是以对象的可序列化为基础的。

.NET对象的XML序列化和反序列化实现的概述:

一、概述

.NET Framework为处理XML数据提供了许多不同的类库。XmlDocument类能让你像处理文件一样处理xml数据,而XmlReader、XmlWriter和它们的派生类使你能够将xml数据作为数据流处理。

XmlSerializer则提供了另外的方法,它使你能够将自己的对象串行化和反串行化为xml。串行化数据既能够让你像处理文件一样对数据进行随机处理,同时又能跳过你不感兴趣的数据。

二、主要类库介绍

.NET 支持对象xml序列化和反序列化的类库主要位于命名空间System.Xml.Serialization中。

1.  XmlSerializer 类

该类用一种高度松散耦合的方式提供串行化服务。你的类不需要继承特别的基类,而且它们也不需要实现特别的接口。相反,你只需在你的类或者这些类的公共域以及读/写属性里加上自定义的特性。XmlSerializer通过反射机制读取这些特性并用它们将你的类和类成员映射到xml元素和属性。

2. XmlAttributeAttribute 类

指定类的公共域或读/写属性对应xml文件的Attribute。

例:[XmlAttribute(“type”)] or [XmlAttribute(AttributeName=”type”)]

3. XmlElementAttribute类

指定类的公共域或读/写属性对应xml文件的Element。

例:[XmlElement(“Maufacturer”)] or [XmlElement(ElementName=”Manufacturer”)]

4. XmlRootAttribute类

Xml序列化时,由该特性指定的元素将被序列化成xml的根元素。

例:[XmlRoot(“RootElement”)] or [XmlRoot(ElementName = “RootElements”)]

5. XmlTextAttribute 类

Xml序列化时,由该特性指定的元素值将被序列化成xml元素的值。一个类只允许拥有一个该特性类的实例,因为xml元素只能有一个值。

6. XmlIgnoreAttribute类

Xml序列化时不会序列化该特性指定的元素。

对于.NET对象的XML序列化和反序列化的理解的基本内容就向你介绍到这里,希望对你了解和学习.NET对象的XML序列化和反序列化有所帮助。

【编辑推荐】

  1. 详解C#中不同类的类型
  2. 浅谈C#中标准Dispose模式的实现
  3. C#选择正确的集合进行编码
  4. C# 4.0新特性:协变与逆变中的编程思想
  5. C#应用Attribute特性 代码统计分析
责任编辑:仲衡 来源: IT168
相关推荐

2009-09-09 15:47:27

XML序列化和反序列化

2011-06-01 15:05:02

序列化反序列化

2011-05-18 15:20:13

XML

2012-04-13 10:45:59

XML

2009-06-14 22:01:27

Java对象序列化反序列化

2018-03-19 10:20:23

Java序列化反序列化

2022-08-06 08:41:18

序列化反序列化Hessian

2009-08-24 17:14:08

C#序列化

2009-09-09 16:10:11

.NET序列化和反序列

2009-07-29 13:39:02

JSON序列化和反序列ASP.NET AJA

2009-08-06 11:16:25

C#序列化和反序列化

2011-06-01 14:26:11

序列化

2019-11-20 10:07:23

web安全PHP序列化反序列化

2009-08-25 14:24:36

C#序列化和反序列化

2023-12-13 13:49:52

Python序列化模块

2009-08-25 14:43:26

C#序列化和反序列化

2021-11-18 07:39:41

Json 序列化Vue

2010-03-19 15:54:21

Java Socket

2009-09-09 17:14:24

XML序列化

2011-06-01 14:50:48

点赞
收藏

51CTO技术栈公众号