Xml的序列化与反序列化

        今天老师说了序列化与反序列化这个东东,开始感觉不知道是用来做什么的。后来自己就亲自做了一些小东东和看了一些别 人的东东,才明白了一点点序列化与反序列化的作用。反正相信,如果你能灵活运用,一定很有用。

       我参见别人的代码再结合自己的想像,写了一个控制台的xml的序列化与反序列化,希望对大家有用。

       

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.IO;
  5. using System.Xml;
  6. using System.Xml.Serialization;
  7. namespace Xmltes1
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             try
  14.             {
  15.                 //===================================下面是XML序列化===============================================//
  16.                 Console.WriteLine("开始序列化。。。。");
  17.                 Company com = new Company();
  18.                 com.ComapnyName = "AiBi Corporation";
  19.                 Employee emp1 = new Employee();
  20.                 Employee emp2 = new Employee();
  21.                 emp1.Name = "John";
  22.                 emp2.Name = "Peter";
  23.                 com.Employees = new Employee[2] { emp1, emp2 };
  24.                 string filename = "C://abc.xml";
  25.                 StreamWriter writer = new StreamWriter(filename);
  26.                 //序列化器
  27.                 XmlSerializer serializer = new XmlSerializer(typeof(Company));//它可以把各个类与其中的属性序列化为xml格式文档。
  28.                 serializer.Serialize(writer, com);//序列化
  29.                 writer.Close();
  30.                 Console.WriteLine("序列化成功!");
  31.                 //===================================下面是XML反序列化===============================================//
  32.                 try
  33.                 {
  34.                     //序列化器
  35.                     XmlSerializer myserializer = new XmlSerializer(typeof(Company));
  36.                     //FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);//打定要打开的文件
  37.                     StreamReader wreader = new StreamReader(filename);
  38.                     Company cp = new Company();
  39.                     //cp = (Company)myserializer.Deserialize(fs);
  40.                     cp = (Company)myserializer.Deserialize(wreader);
  41.                     Console.WriteLine("CompayName is :{0}/n", cp.ComapnyName);
  42.                     Console.WriteLine("empl.Name is:{0}/n", cp.Employees[0].Name);
  43.                     Console.WriteLine("emp2.Name is:{0}/n", cp.Employees[1].Name);
  44.                     Console.WriteLine("反序列化成功!");
  45.                     Console.ReadLine();
  46.                 }
  47.                 catch
  48.                 {
  49.                     Console.WriteLine("反序列化失败!");
  50.                 }
  51.             }
  52.             catch
  53.             {
  54.                 Console.WriteLine("序列化失败!");
  55.             }
  56.         }
  57.     }
  58.     public class Company
  59.     {
  60.         public string ComapnyName;
  61.         public Employee[] Employees;
  62.     }
  63.     public class Employee
  64.     {
  65.         public string Name;
  66.     }
  67. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值