以下展示如何測試 Person 物件的 XML 序列化與反序列化流程:
class Test
{
// 序列化方法
public void Serialize()
{
Person c = new Person("cyj");
c.Courses = new Course[2];
c.Courses[0] = new Course("英語", "交流工具");
c.Courses[1] = new Course("數學", "自然科學");
XmlSerializer xs = new XmlSerializer(typeof(Person));
using (Stream stream = new FileStream(@"c:\cyj.XML", FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
xs.Serialize(stream, c);
}
}
// 反序列化方法
public void Deserialize()
{
XmlSerializer xs = new XmlSerializer(typeof(Person));
using (Stream stream = new FileStream(@"c:\cyj.XML", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
Person p = (Person)xs.Deserialize(stream);
Console.WriteLine(p.Name);
Console.WriteLine(p.Age);
Console.WriteLine(p.Courses.Length);
Console.Read();
}
}
}
執行序列化後產生的 XML 結構如下:
<?xml version="1.0"?>
<Person xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<Sex>男</Sex>
<Age>31</Age>
<Courses>
<Course>
<Name>英語</Name>
</Course>
<Course>
<Name>數學</Name>
</Course>
</Courses>
<Name>cyj</Name>
</Person>
XmlSerializer 進行序列化/反序列化using 區塊自動管理資源釋放Courses 會自動序列化為巢狀 XML 元素[XmlIgnore] 標記的屬性(如 Description)不會出現在 XML 中