首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 實作物件 XML 序列化與反序列化完整教學(下)

     編輯:關於C語言

測試類別完整程式碼

以下展示如何測試 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 結構如下:

<?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 中
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved