开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.1.1 XML文档的结构
本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第3章 ,第3.1.1节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
804 0
spring源码学习之:xml标签扩展配置例子
在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的 时候,会显得非常笨拙。一般的做法会用原生态的方式去解析定义好的xml文件,然后转化为配置对象,这种方式当然可以解决所有问题,但实现起来比较繁琐, 特别是是在配置非常复杂的时候,解析工作是一个不得不考虑的负担。
685 0
05_学生管理系统,xml读写,布局的综合应用
 最终要做的项目目标:   2、编写Android清单文件AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="co
843 0
第九章 关系映射 .hbm.xml简单写法与解释
<h4 class="cjk"> <pre name="code" class="html">&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;!-- 上面是xml文件的版本与编码 --&gt; &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
879 0
Winform编程总结2—常用的XML读写
1 using System; 2  using System.Data; 3 using System.Configuration; 4 using System.Web; 5 using System.
607 0
使用XML记录数据的一些体会
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zergskj/article/details/1485520 这两天要在原有系统之上增加一些个性化功能, 但原来的SQL数据库已经很庞大,而且要实现的个性化功能对数据的记录要求也不多  于是我决定使用XML作为数据的载体记录少量数据。
364 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载