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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

.NET XML序列化,框架類及使用

2019-11-17 04:06:45
字體:
供稿:網(wǎng)友
一、本章主要介紹.NET xml序列化,構(gòu)建XML序列化的框架類,主要放在你的框架項(xiàng)目里面,類名字命名為Serialiser,我的框架項(xiàng)目名稱是MingXu.FrameWork,我將Serialiser放到它下面,MingXu.FrameWork類型為Class Library



二、序列化類用到了2個(gè)dll,分別為:

     System.Xml.Serialization:XML序列化類

     System.IO:IO類

注意添加對(duì)System.Xml.Serialization及System.IO的引用。

如果不知道怎么添加對(duì)dll的引用,請(qǐng)參見微軟 MSMQ 使用 第二章 構(gòu)造MSMQ的框架類



三、代碼如下:代碼都有注釋,所以不做過多的解釋了,如果有看不明白的,請(qǐng)?jiān)谠u(píng)論里面留言,我在加注釋



//******************************************************

//文件名:Serialiser.cs

//功能:Xml 序列化類

//作者:徐明

//日期:2009-11-4

//*******************************************************



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml.Serialization;

using System.IO;

using System.Diagnostics;





namespace MingXu.FrameWork

{

    /// <summary>

    ///  Generic XML serialiser

    /// </summary>

    /// <typeparam name="T">序列化類型</typeparam>

    public sealed class Serialiser<T>

    {

        /// <summary>

        /// 功能:序列化

        /// 作者:Jerry

        /// 日期:2009-11-4

        /// </summary>

        /// <param name="obj">序列化對(duì)象</param>

        /// <param name="filepath">路徑</param>

        public static void Serialize(T obj, string filepath)

        {

            if (string.IsNullOrEmpty(filepath) || obj==null)

                return;



            StreamWriter myWriter = null;

            try

            {

                XmlSerializer mySerializer = new XmlSerializer(obj.GetType());

                myWriter = new StreamWriter(filepath);

                mySerializer.Serialize(myWriter, obj);

            }

            catch (Exception ex)

            {

                //Log.Debug(ex.Message);

            }

            finally

            {

                if (myWriter != null)

                {

                    myWriter.Close();

                    myWriter.Dispose();

                    myWriter = null;

                }

            }



        }



        /// <summary>

        /// 功能:反序列化

        /// 作者:Jerry

        /// 日期:2009-11-4

        /// </summary>

        /// <param name="filepath">路徑</param>

        /// <returns>反序列化的對(duì)象</returns>

        public static T Deserialize(string filepath)

        {           



            T myObj = default(T);



            if (string.IsNullOrEmpty(filepath) || !File.Exists(filepath))

                return myObj;



            FileStream myFileStream = null;

            try

            {

                XmlSerializer mySerializer = new XmlSerializer(typeof(T));

                myFileStream = new FileStream(filepath, FileMode.Open);

                myObj = (T)mySerializer.Deserialize(myFileStream);

            }

            catch (Exception ex)

            {

                //Log.Debug(ex.Message);

            }

            finally

            {

                if (myFileStream != null)

                {

                    myFileStream.Close();

                    myFileStream.Dispose();

                    myFileStream = null;

                }

            }

            return myObj;

        }

    }

}





三、序列化類的使用

1、首先新建一個(gè)控制臺(tái)項(xiàng)目MingXu.ConsoleApp,注意添加對(duì)框架類的引用,然后構(gòu)造一個(gè)測試類,用來進(jìn)行序列化操作,代碼如下:



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;

using System.Xml.Serialization;



namespace MingXu.ConsoleApp

{

    public class xmlSerializationTest

    {

        string _availableVersion;



        [XmlElement("availableVersion")]

        public string AvailableVersion

        {

            get { return _availableVersion; }

            set { _availableVersion = value; }

        }

    }

}



2、然后在Main函數(shù)里添加代碼進(jìn)行操作:

代碼如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Mingxu.TestClass;

using MingXu.FrameWork;



namespace MingXu.ConsoleApp

{

    class PRogram

    {

        static void Main(string[] args)

        {

            ser();

            deser();

        }



        /// <summary>

        /// 序列化

        /// </summary>

        private static void ser()

        {

            xmlSerializationTest test = new xmlSerializationTest();

            test.AvailableVersion = "Hello world!";

            string path = "d://xmlSerializationTest.xml";

            Serialiser<xmlSerializationTest>.Serialize(test, path);

        }



        /// <summary>

        /// 反序列化

        /// </summary>

        private static void deser()

        {

            string path = "d://xmlSerializationTest.xml";

            xmlSerializationTest test = Serialiser<xmlSerializationTest>.Deserialize(path);

            Console.WriteLine(test.AvailableVersion);

            string bb = Console.ReadLine();

        }

       

    }

}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 运城市| 武山县| 蚌埠市| 乐安县| 韶山市| 平武县| 威远县| 思南县| 蓬莱市| 日土县| 新巴尔虎左旗| 沽源县| 黄梅县| 和龙市| 连城县| 民权县| 多伦县| 边坝县| 双桥区| 荔浦县| 藁城市| 收藏| 南靖县| 安国市| 莱西市| 德昌县| 安康市| 拜城县| 襄垣县| 海兴县| 正定县| 泸水县| 东兰县| 长兴县| 浙江省| 综艺| 广宁县| 城市| 定日县| 毕节市| 株洲市|