在.NET中实现对象序列化

转载 2006年06月07日 09:26:00
自从有了XML以后,跨系统的数据交换变得越来越简单。.NET更把XML做为底层数据交换的基础,并在.NET框架中提供了强大的类库以增强XML的编程能力。这些类包含在System.Xml命名空间中。在跨系统的数据交换中,对象的序列化与反序列化是重中之重。.NET为此专门提供了一个System.Xml.Serialization命名空间用于对象的序列化。

  要了解XML的序列化可首先参考微软的介绍:
  ● Introducing XML Serialization
  ● XML and SOAP Serialization
  ● Roadmap for XML Serialization in the .NET Framework

   .NET通过使用特性Attribute控制对象的序列化。例如:
<XmlType("order")> _
Public Class Order

    
<XmlElement("id")> _
    
Public ID As String

    
<XmlArray("items"), XmlArrayItem("item")> _
    
Public OrderItems() As OrderedItem

End Class


Public Class OrderItem
    
<XmlElement("name")> _
    
Public ItemName As String
End Class


  被.NET序列化后的XML是:

<order>
    
<id>20050405</id>
    
<items>
        
<item>
            
<name>对象序列化</name>
        
</item>
    
</items>
</order>


  XmlType:可以应用于声明为Public的类、结构、枚举和接口。它定义了Xml类型的名字和命名空间。
  XmlElement:它定义了要序列化为XML元素的字段或属性。字段或属性必须声明为Public。
  XmlArray:它定义了要序列化为XML集合的字段或属性。字段或属性必须声明为Public。
  XmlArrayItem:定义了可以添加到集合中的派生类型。

  .NET还提供了其它的一些Attribute。全部的Attribut特性可以通过下面地址查看:
  ● Attributes That Control XML Serialization 
  如何使用这些Attribute,请查看:
  ● Controlling XML Serialization Using Attributes 


  有了这些Attribute,我们可以很容易的将对象序列化,但是由谁来完成呢?那就需要了解一下XmlSerializer了。ASP.NET 就是使用 XmlSerializer 类对 XML Web services 消息进行编码的。

  关于XmlSerializer 类请查看:
  ● XmlSerializer 类 
  ● XmlSerializer.Serialize 方法

   XmlSerializer的使用也非常简单:

        Dim serializer As New XmlSerializer(GetType(Order))
        
Dim writer As New StreamWriter(filename)
        
Dim o As New Order

        o.ID 
= “20050405
        
        
Dim item As OrderItem
        item.ItemName 
= “对象序列化”
        
        
Dim items(0As OrderItem
        items(
0= item
        
        o.OrderItems 
= items

        serializer.Serialize(writer, po)
        writer.Close()


  在使用XmlSerializer之前,可以先参考一下:
  ●XmlSerializer 常见问题疑难解答

.net中对象序列化技术浅谈

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。例如,可以序列化一个对象,然后使用 HTTP 通过 Inte...

C#[Serializable]在C#中的作用-NET 中的对象序列化

深入探讨C#序列化和反序列化之前我们先要明白什么是序列化,它又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时...

.NET 插件系统框架设计(二) 使用对象序列化实现自定义配置文件管理

.NET 插件系统框架设计(二) 使用对象序列化实现自定义配置文件管理 2009年11月26日 博客园 yaoshiyou   一、 为什么要这样做   问题:在程序开发中,经常会涉及对XML...
  • anyqu
  • anyqu
  • 2012年06月21日 16:26
  • 768

.Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务3[聊天室][使用IE浏览本页]

本案例使用前面封装的网络服务类编写简易聊天室,采用Tcp和多线程相关技术: App.config文件: 示范代码1.0" encoding="utf-8" ?> ...

.Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--类设计2[使用IE浏览本页]

本案例使用.Net Socket的Tcp、Udp实现字串、文件、各种序列化对象的网络传输,同时封装了Tcp的粘包、半包处理细节,定义了网络封包格式,在发送端和接收端无需考虑内部传输细节。以下是类设计:...

.Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务4[聊天室][使用IE浏览本页]

本案例使用前面封装的网络服务类编写简易聊天室,采用Tcp和异步套接字相关技术: App.config文件: 示范代码xml version="1.0" encoding="utf-8" ?...

.Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务1[使用IE浏览本页]

直接使用Socket做服务器端和客户端,采用Tcp协议: 客户端代码: 示范代码using System; using System.Collections.Generic; using Sy...

Serializable在C#中的作用.NET 中的对象序列化

简介 序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将...

.net对象二进制序列化

对象的二进制序列化 1、  序列化:把对象变成二进制数组, 前提: 对象必须标记为可序列化的,创建类时,在类加[Serializable]标记为可序列化的,如果这个类有父类,那么父类也必须标记为...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在.NET中实现对象序列化
举报原因:
原因补充:

(最多只允许输入30个字)