国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

深入分析XmlSerializer對象的Xml序列化與反序列化的示例詳解

2024-07-10 12:45:32
字體:
供稿:網(wǎng)友
這篇隨筆對應(yīng)的.Net命名空間是System.Xml.Serialization;文中的示例代碼需要引用這個命名空間。
為什么要做序列化和反序列化?
.Net程序執(zhí)行時,對象都駐留在內(nèi)存中;內(nèi)存中的對象如果需要傳遞給其他系統(tǒng)使用;或者在關(guān)機時需要保存下來以便下次再次啟動程序使用就需要序列化和反序列化。
范圍:本文只介紹xml序列化,其實序列化可以是二進制的序列化,也可以是其他格式的序列化。
看一段最簡單的Xml序列化代碼
代碼如下:
class Program
{
    static void Main(string[] args)
    {
        int i = 10;
        //聲明Xml序列化對象實例serializer
        XmlSerializer serializer = new XmlSerializer(typeof(int));
        //執(zhí)行序列化并將序列化結(jié)果輸出到控制臺
        serializer.Serialize(Console.Out, i);
        Console.Read();
    }
}

上面代碼對int i進行了序列化,并將序列化的結(jié)果輸出到了控制臺,輸出結(jié)果如下
代碼如下:
<?xml version="1.0" encoding="gb2312"?>
<int>10</int>

可以將上述序列化的xml進行反序列化,如下代碼
代碼如下:
static void Main(string[] args)
{
    using (StringReader rdr = new StringReader(@"<?xml version=""1.0"" encoding=""gb2312""?>
<int>10</int>"))
    {
        //聲明序列化對象實例serializer
        XmlSerializer serializer = new XmlSerializer(typeof(int));
        //反序列化,并將反序列化結(jié)果值賦給變量i
        int i = (int)serializer.Deserialize(rdr);
        //輸出反序列化結(jié)果
        Console.WriteLine("i = " + i);
        Console.Read();
    }
}

以上代碼用最簡單的方式說明了xml序列化和反序列化的過程,.Net系統(tǒng)類庫為我們做了大量的工作,序列化和反序列化都非常簡單。但是在現(xiàn)實中業(yè)務(wù)需求往往比較復(fù)雜,不可能只簡單的序列化一個int變量,顯示中我們需要對復(fù)雜類型進行可控制的序列化。
自定義對象的Xml序列化:
System.Xml.Serialization命名空間中有一系列的特性類,用來控制復(fù)雜類型序列化的控制。例如XmlElementAttribute、XmlAttributeAttribute、XmlArrayAttribute、XmlArrayItemAttribute、XmlRootAttribute等等。
看一個小例子,有一個自定義類Cat,Cat類有三個屬性分別為Color,Saying,Speed。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 虞城县| 甘南县| 丹凤县| 嘉兴市| 乌兰察布市| 芜湖市| 吉首市| 天津市| 阿克苏市| 香河县| 英吉沙县| 南木林县| 南丰县| 桃江县| 福建省| 宁城县| 班玛县| 鲁甸县| 芮城县| 贡觉县| 成安县| 五常市| 大冶市| 化州市| 巴林左旗| 瑞昌市| 甘孜县| 峨山| 灯塔市| 博客| 荃湾区| 溆浦县| 佛学| 南充市| 承德市| 内江市| 内江市| 松滋市| 博爱县| 富蕴县| 晴隆县|