C#基础拾遗02-XML串行化

简介:

C#基础拾遗02-XML串行化

1. 什么叫串行化?

串行化(Serialize)是指将对象存储到介质(如文件、内存缓冲区等)中或是以二进制方式通过网络传输。反串行化(Deserialize)指将这些连续的数据重新构建一个与原始对象状态相同的对象

2. 串行化分类两种形式

  • 二进制串行化

串行化时数据以二进制形式存入文件。但是该方式不适合同其他非.NET程序交换数据。

  • XML串行化

对象的公共属性以XML元素和特性表示。该方式可以和其他非.NET程序交换数据。该方法要引用命名空间using System.Xml.Serialization;

另外,XML串行化器是不能针对枚举类型串行化操作的,如果有必要的话,可以将枚举型变量设置为私有变量,并且设置相应的简单类型变量进行操作。


3. 实例

     首先创建我们要串行化的类:

 

复制代码
public   class  Book
{
     
public   string  _title;
     
public    int  _page;
     
public   string [] _Part;
     
public   string  _author;
     
public   float  _price;
}
复制代码

 

  • 串行化对象
    复制代码
    void  SerializeObject(Book[] book) 



    try  



    XmlSerializer ser 
    =   new  XmlSerializer( typeof (Book[]),  new  XmlRootAttribute( " Books " )); // 声明对象,并且添加根节点 

    StreamWriter sw 
    =   new  StreamWriter( " book.prt " ); 

    ser.Serialize(sw, book); 

    sw.Close(); 



    catch  (Exception e) 



    MessageBox.Show(
    " 串行化失败: "   +  e.Message.ToString()); 



    复制代码

 

调用:

 

调用串行化

 

此时打开book.prt文件,如下图所示。

image

  • 反串行化方法
    复制代码
    private  Book[] DeserializeObject() 



    FileStream fs 
    =   new  FileStream( " book.prt " , FileMode.Open); 

    XmlSerializer ser 
    =   new  XmlSerializer( typeof (Book[]),  new  XmlRootAttribute( " Books " )); 

    Book[] books 
    =  (Book[])ser.Deserialize(fs); 

    return  books; 

    复制代码

 

 

调用

 

结果如下:

image



    本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/archive/2011/06/03/2072145.html,如需转载请自行联系原作者



相关文章
|
6月前
|
C#
C#拾遗补漏之goto跳转语句
在我们日常工作中常用的C#跳转语句有break、continue、return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,今天大姚带大家一起来认识一下goto语句及其它的优缺点。
|
6月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
|
XML 存储 C#
C#三十 Ado.net和XML
C#三十 Ado.net和XML
59 0
|
2月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
175 61
C# 中的 XML 与 JSON 数据处理
|
1月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
75 0
|
1月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
319 0
|
5月前
|
XML 开发框架 人工智能
C#/.NET/.NET Core拾遗补漏合集(24年5月更新)
C#/.NET/.NET Core拾遗补漏合集(24年5月更新)
|
6月前
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
|
6月前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
95 1
|
6月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。