.NET Framework提供了多种序列化对象的方法,二进制,XML, SOAP,而在系统中应用往往使用对象序列化来暂存或缓存对象状态。
第一步,序列化对象到字串
public static string GetObjectXML(object e)
...{
XmlSerializer serilizer = new XmlSerializer(typeof(Employee));

System.Text.StringBuilder sbXML = new StringBuilder();

System.IO.StringWriter writer = new System.IO.StringWriter(sbXML);

serilizer.Serialize(writer, e);

writer.Close();

return sbXML.ToString();
}
第二步,将字串反序列化为对象
public static Employee GetObjectFromXML(string xml)
...{
XmlSerializer serializer = new XmlSerializer(typeof(Employee));

System.IO.StringReader reader = new System.IO.StringReader(xml);

Employee emp = (Employee)serializer.Deserialize(reader);

return emp;
}
Employee是自定义对象,XML 序列化只能序列化public属性,无值的属性不生成XML Tag.
调用示例:
static void Main(string[] args)
...{
Employee emp = new Employee();
emp.FirstName = "Johnson";
emp.LastName = "Yang";
emp.Id = 1;

Console.WriteLine("{0}", GetObjectXML(emp));

Console.WriteLine("First Name = {0}", GetObjectFromXML(GetObjectXML(emp)).FirstName);
}


//Employee

public class Employee
...{
member variables#region member variables
private int _id;
private string _firstName;
private string _lastName;
private string _sex;
private DateTime _birthday = DateTime.Now;
#endregion

public properties#region public properties
public int Id
...{
get ...{ return _id; }
set ...{ _id = value; }
}
public string FirstName
...{
get ...{ return _firstName; }
set ...{ _firstName = value; }
}
public string LastName
...{
get ...{ return _lastName; }
set ...{ _lastName = value; }
}
public string Sex
...{
get ...{ return _sex; }
set ...{ _sex = value; }
}
public DateTime BirthDay
...{
get ...{ return _birthday; }
set ...{ _birthday = value; }
}
#endregion
}
//输出结果
<?xml version="1.0" encoding="utf-16"?>
<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:
//www.w3.org/2001/XMLSchema">
<Id>1</Id>
<FirstName>Johnson</FirstName>
<LastName>Yang</LastName>
<BirthDay>2007-03-13T21:51:33.078125+08:00</BirthDay>
</Employee>
First Name = Johnson
第一步,序列化对象到字串
public static string GetObjectXML(object e)
...{
XmlSerializer serilizer = new XmlSerializer(typeof(Employee));
System.Text.StringBuilder sbXML = new StringBuilder();
System.IO.StringWriter writer = new System.IO.StringWriter(sbXML);
serilizer.Serialize(writer, e);
writer.Close();
return sbXML.ToString();
}
第二步,将字串反序列化为对象
public static Employee GetObjectFromXML(string xml)
...{
XmlSerializer serializer = new XmlSerializer(typeof(Employee));
System.IO.StringReader reader = new System.IO.StringReader(xml);
Employee emp = (Employee)serializer.Deserialize(reader);
return emp;
}
Employee是自定义对象,XML 序列化只能序列化public属性,无值的属性不生成XML Tag.
调用示例:
static void Main(string[] args)
...{
Employee emp = new Employee();
emp.FirstName = "Johnson";
emp.LastName = "Yang";
emp.Id = 1;
Console.WriteLine("{0}", GetObjectXML(emp));
Console.WriteLine("First Name = {0}", GetObjectFromXML(GetObjectXML(emp)).FirstName);
}

//Employee
public class Employee
...{
member variables#region member variables
private int _id;
private string _firstName;
private string _lastName;
private string _sex;
private DateTime _birthday = DateTime.Now;
#endregion
public properties#region public properties
public int Id
...{
get ...{ return _id; }
set ...{ _id = value; }
}
public string FirstName
...{
get ...{ return _firstName; }
set ...{ _firstName = value; }
}
public string LastName
...{
get ...{ return _lastName; }
set ...{ _lastName = value; }
}
public string Sex
...{
get ...{ return _sex; }
set ...{ _sex = value; }
}
public DateTime BirthDay
...{
get ...{ return _birthday; }
set ...{ _birthday = value; }
}
#endregion
}//输出结果
<?xml version="1.0" encoding="utf-16"?>
<Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:
//www.w3.org/2001/XMLSchema">
<Id>1</Id>
<FirstName>Johnson</FirstName>
<LastName>Yang</LastName>
<BirthDay>2007-03-13T21:51:33.078125+08:00</BirthDay>
</Employee>
First Name = Johnson
...{
浙公网安备 33010602011771号