今天老师说了序列化与反序列化这个东东,开始感觉不知道是用来做什么的。后来自己就亲自做了一些小东东和看了一些别 人的东东,才明白了一点点序列化与反序列化的作用。反正相信,如果你能灵活运用,一定很有用。
我参见别人的代码再结合自己的想像,写了一个控制台的xml的序列化与反序列化,希望对大家有用。
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.IO;
- using System.Xml;
- using System.Xml.Serialization;
- namespace Xmltes1
- {
- class Program
- {
- static void Main(string[] args)
- {
- try
- {
- //===================================下面是XML序列化===============================================//
- Console.WriteLine("开始序列化。。。。");
- Company com = new Company();
- com.ComapnyName = "AiBi Corporation";
- Employee emp1 = new Employee();
- Employee emp2 = new Employee();
- emp1.Name = "John";
- emp2.Name = "Peter";
- com.Employees = new Employee[2] { emp1, emp2 };
- string filename = "C://abc.xml";
- StreamWriter writer = new StreamWriter(filename);
- //序列化器
- XmlSerializer serializer = new XmlSerializer(typeof(Company));//它可以把各个类与其中的属性序列化为xml格式文档。
- serializer.Serialize(writer, com);//序列化
- writer.Close();
- Console.WriteLine("序列化成功!");
- //===================================下面是XML反序列化===============================================//
- try
- {
- //序列化器
- XmlSerializer myserializer = new XmlSerializer(typeof(Company));
- //FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);//打定要打开的文件
- StreamReader wreader = new StreamReader(filename);
- Company cp = new Company();
- //cp = (Company)myserializer.Deserialize(fs);
- cp = (Company)myserializer.Deserialize(wreader);
- Console.WriteLine("CompayName is :{0}/n", cp.ComapnyName);
- Console.WriteLine("empl.Name is:{0}/n", cp.Employees[0].Name);
- Console.WriteLine("emp2.Name is:{0}/n", cp.Employees[1].Name);
- Console.WriteLine("反序列化成功!");
- Console.ReadLine();
- }
- catch
- {
- Console.WriteLine("反序列化失败!");
- }
- }
- catch
- {
- Console.WriteLine("序列化失败!");
- }
- }
- }
- public class Company
- {
- public string ComapnyName;
- public Employee[] Employees;
- }
- public class Employee
- {
- public string Name;
- }
- }