自从有了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控制对象的序列化。例如:

【转】.NET对象序列化2<XmlType("order")> _


  被.NET序列化后的XML是:

【转】.NET对象序列化2<order>
【转】.NET对象序列化2    
<id>20050405</id>
【转】.NET对象序列化2    
<items>
【转】.NET对象序列化2        
<item>
【转】.NET对象序列化2            
<name>对象序列化</name>
【转】.NET对象序列化2        
</item>
【转】.NET对象序列化2    
</items>
【转】.NET对象序列化2
</order>
【转】.NET对象序列化2


  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的使用也非常简单:

【转】.NET对象序列化2        Dim serializer As New XmlSerializer(GetType(Order))
【转】.NET对象序列化2        
Dim writer As New StreamWriter(filename)
【转】.NET对象序列化2        
Dim o As New Order
【转】.NET对象序列化2
【转】.NET对象序列化2        o.ID 
= “20050405
【转】.NET对象序列化2        
【转】.NET对象序列化2        
Dim item As OrderItem
【转】.NET对象序列化2        item.ItemName 
= “对象序列化”
【转】.NET对象序列化2        
【转】.NET对象序列化2        
Dim items(0As OrderItem
【转】.NET对象序列化2        items(
0= item
【转】.NET对象序列化2        
【转】.NET对象序列化2        o.OrderItems 
= items
【转】.NET对象序列化2
【转】.NET对象序列化2        serializer.Serialize(writer, po)
【转】.NET对象序列化2        writer.Close()
【转】.NET对象序列化2


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

相关文章:

  • 2021-07-11
  • 2022-01-02
  • 2022-02-15
  • 2022-02-14
  • 2021-12-01
  • 2022-12-23
  • 2021-06-16
  • 2021-10-29
猜你喜欢
  • 2021-12-04
  • 2021-10-05
  • 2021-11-28
  • 2021-12-07
  • 2022-01-25
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案