C# XML序列化和反序列化

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Serialization;

namespace SunCreate.ConfirmingSecrecyMS.DistributedService
{
    public class XmlHelp
    {

        /// <summary>
        /// 序列化对象
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="Entity">对象</param>
        /// <param name="Path">xml存放路径</param>
        public static void XmlSerialize<T>(T Entity,string Path) where T:class
        {
            if(string.IsNullOrEmpty(Path))
            {
                return;
            }
            string FileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xml";
            string BasePath = System.IO.Path.Combine(Path, "Usual");
            if (!System.IO.Directory.Exists(BasePath))
            {
                System.IO.Directory.CreateDirectory(BasePath);
            }
            string FileFullPath = System.IO.Path.Combine(BasePath, FileName);
            try
            {
                using (StreamWriter sw = new StreamWriter(FileFullPath))
                {
                    XmlSerializer Serializer = new XmlSerializer(typeof(T));
                    Serializer.Serialize(sw, Entity);
                    sw.Close();
                }
            }
            catch(Exception ex)
            {
            }
        }


        /// <summary>
        /// 反序列化xml
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="FileFullPath"></param>
        /// <returns></returns>
        public static T XmlDeserialize<T>(string FileFullPath) where T:class
        {
            if (!File.Exists(FileFullPath))
            {
                return null;
            }
            try
            {
                using (StreamReader sr = new StreamReader(FileFullPath))
                {
                    XmlSerializer Serializer = new XmlSerializer(typeof(T));
                    object Result = Serializer.Deserialize(sr) ;
                    sr.Close();
                    return Result as T;
                }
            }
            catch
            {
                return null;
            }
        }
    }
}

调用方法:

//序列化
XmlHelp.XmlSerialize<CatalogInfo>(new CatalogInfo(), this.m_StrRootDirPath); 

//反序列化
CatalogInfo clsCataInfo = XmlHelp.XmlDeserialize<CatalogInfo>(
this.m_StrRootDirPath);
public class CatalogInfo
{
}

 

posted @ 2016-12-16 16:08  可乐•雪碧•咖啡•茶  阅读(250)  评论(0编辑  收藏  举报