在.NET中實現對象序列化

   自從有了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 常見問題疑難解答 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章