• 【转】.NET对象序列化2


       自从有了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 常见问题疑难解答

  • 相关阅读:
    ASP.NET MVC IIS7 403.14-Forbidden
    SQL Server 查询锁表和接锁表
    一款不错的golang配置文件库
    某奇艺滑块
    爬虫系列
    Docker部署Python爬虫项目
    Cmder
    Selenium处理alert/confirm/prompt提示框
    Django2.0使用
    排序
  • 原文地址:https://www.cnblogs.com/ringwang/p/1930964.html
Copyright © 2020-2023  润新知