在.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控制对象的序列化。例如:

None.gif < XmlType( " order " ) >  _
ExpandedBlockStart.gifContractedBlock.gif
Public   Class Order Class Order
InBlock.gif
InBlock.gif    
<XmlElement("id")> _
InBlock.gif    
Public ID As String
InBlock.gif
InBlock.gif    
<XmlArray("items"), XmlArrayItem("item")> _
InBlock.gif    
Public OrderItems() As OrderedItem
InBlock.gif
ExpandedBlockEnd.gif
End Class

None.gif
ExpandedBlockStart.gifContractedBlock.gif
Public   Class OrderItem Class OrderItem
InBlock.gif    
<XmlElement("name")> _
InBlock.gif    
Public ItemName As String
ExpandedBlockEnd.gif
End Class

None.gif


  被.NET序列化后的XML是:

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


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

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


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

转载于:https://www.cnblogs.com/zsi/archive/2005/04/07/132850.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值