主要2种方式1.BinaryFormatter  2.XmlSerializer

创建对象

[Serializable] //如果要想保存某个class中的字段,必须在class前面加个这样attribute(C#里面用中括号括起来的标志符)
public class Person
{public int age;public string name;[NonSerialized] //如果某个字段不想被保存,则加个这样的标志public string secret;}

1.BinaryFormatter (性能好)

class Program
{static void Main(string[] args){//序列化Person person = new Person();person.age = 18;person.name = "tom";person.secret = "i will not tell you";FileStream stream = new FileStream(@"c:\temp\person.dat", FileMode.Create);BinaryFormatter bFormat = newBinaryFormatter();bFormat.Serialize(stream, person);stream.Close();//反序列化Person person = new Person();FileStream stream = new FileStream(@"c:\temp\person.dat", FileMode.Open);BinaryFormatter bFormat = new BinaryFormatter();person = (Person)bFormat.Deserialize(stream);//反序列化得到的是一个object对象.必须做下类型转换
        stream.Close();Console.WriteLine(person.age + person.name + person.secret);//结果为18tom.因为secret没有有被序列化.
}
}

2.XmlSerializer(常用)

//序列化
Person person = new Person();
person.age = 18;
person.name = "tom";
person.secret = "i will not tell you";
FileStream stream = new FileStream(@"c:\temp\xmlFormat.xml", FileMode.Create);XmlSerializer xmlserilize = new XmlSerializer(typeof(Person));
xmlserilize.Serialize(stream, person);
stream.Close();//反序列化
Person person = new Person();
FileStream stream =new FileStrea (@"c:\temp\xmlFormat.xml",FileMode.Open);XmlSerializerxmlserilize = new XmlSerializer(typeof(Person));
person = (Person)xmlserilize.Deserialize(stream);
stream.Close();Console.WriteLine(person.age + person.name + person.secret);

总体思路:

序列化:

  1.得到一个存储对象的类型

  2.创建一个写入文件流

  3.定义要序列化的类型

  4.调用序列化方法

反序列化:

  1.定义一个装载对象的类型

  2.创建一个读出文件流

  3.定义要反序列化的类型

  4.调用反序列化方法

转载于:https://www.cnblogs.com/zhang1f/p/11093520.html

C# XML的序列化与反序列化相关推荐

  1. C#实现对象的Xml格式序列化及反序列化

    要序列化的对象的类: [Serializable] public class Person { private string name; public string Name { get { retu ...

  2. jackson (json、xml的序列化与反序列化)

    jackson用于java对象到json的序列化与反序列化.还支持xml格式. jackson用于实现json与java对象的序列与反序列化.web service要实现跨机器传送对象那么就需要有一种 ...

  3. XML的序列化和反序列化 详细介绍

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  4. 通过XmlSerializer 实现XML的序列化与反序列化

    通过XmlSerializer 我们可以十分简单的将Model与XML进行转换 官文在点这里 帮助类 1 using System; 2 using System.Text; 3 using Syst ...

  5. Java XML解析: 序列化 反序列化

    Java解析XML的类库很多,本文记录用XStream库对XML的处理 背景 实际开发中,应用报文的格式一般都是JSON和XML:JSON大家都很熟悉(优秀类库:GSON/FastJson/Jacks ...

  6. 序列化和反序列化(转)

    转载:http://kb.cnblogs.com/page/515982/ 摘要 序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出 ...

  7. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境-- 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  8. 序列化和反序列化--转

    http://www.infoq.com/cn/articles/serialization-and-deserialization 简介 文章作者服务于美团推荐与个性化组,该组致力于为美团用户提供每 ...

  9. 谈谈:.Net中的序列化和反序列化

    序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一 ...

最新文章

  1. 模板引擎:VelocityFreeMarker(转)
  2. go/golang init()方法的调用
  3. arpanet(阿帕网)
  4. 三校生计算机对口本科有哪些学校,宝山三校生五月对口高考报名
  5. 2014年百度之星程序设计大赛 - 初赛(第二轮)JZP Set
  6. 谈表达式树的缓存(6):五种缓存方式的性能比较
  7. 蓝桥杯 ADV-108算法提高 分数统计
  8. JAVA 注解示例 详解
  9. 读书笔记图灵传,算法
  10. ps中怎么导出tif_TIF图片太大难以上传?
  11. 抖音实战~搜索页面~扫描二维码
  12. java贪吃蛇保存,Java 实现贪吃蛇游戏的示例
  13. 2015年4月9号和4月11号
  14. 手机项目人力投入评估
  15. 学习UI设计,哪些软件是必学的
  16. 【UE4】通过动画序列自动生成蒙太奇(In Code)
  17. css溢出文本省略号
  18. 【计算机无法开机】电脑无法开启,显示REGISTRY_ERROR
  19. 【R语言】年龄性别频数匹配 挑选样本 病例对照研究,对年龄性别进行频数匹配
  20. python爬虫百度安全验证_爬虫黑科技-绕开百度人机验证

热门文章

  1. hadoop目录命令
  2. nginx basic auth配置踩坑记
  3. 通过bootstrap来学习less
  4. ionic开发ios app
  5. HDU 2498 Digits
  6. 64位LINUX下hadoop2.2.0重新编译及安装步骤
  7. 《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(4)
  8. WinAPI: GetSystemPowerStatus - 获取系统电源状态的信息
  9. 为什么说中国式报表特殊-5.4 填报
  10. 怎样实现全屏显示(vc)