惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
V
V2EX
量子位
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - 【当耐特】
爱范儿
爱范儿
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
小众软件
小众软件
IT之家
IT之家
博客园_首页
博客园 - 聂微东
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗

博客园 - zsi

在线程中调用SaveFileDialog DSOFramer 之一:在 64 位系统注册 DSOFramer GridView 绑定数据不满一页时填充空行的方法 GridView 始终显示 Pager 分页行的一种方法 Chrome: Google加入浏览器大战之兼容性 调用unrar.dll时SEHException外部组件异常的处理 ASP.NET 2.0无法打开到 SQL Server 的连接 扯扯OpenFileDialog和.NET的缺省目录 给ASP.NET程序换换地儿 对象序列化:经验小结 对象序列化:使用XmlSerializer走完最后一步 对象序列化:使用System.Xml.Serialization命名空间 了解HTTP协议一些有用资料 Yahoo!十岁! 在VB.NET中处理构造函数时值得注意的两个陈述 微软新发布的共享设计模式的WIKI 还不快进入Design Pattern的世界? 另人费解的IsNot关键字 也说金山词霸2005内存泄露的问题
在.NET中实现对象序列化
zsi · 2005-04-07 · via 博客园 - zsi

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