zoukankan      html  css  js  c++  java
  • 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
    {
    }
  • 相关阅读:
    Linux 文件及目录管理命令基础
    MHA高可用及读写分离
    MySQL的备份和回复
    mysql的主从复制
    MySQL索引管理及执行计划
    [LeetCode]Linked List Cycle II解法学习
    浅谈reverse_iterator的base()函数
    [LeetCode]LRU Cache有个问题,求大神解答【已解决】
    分享一篇不错的博文《写给准备参加秋招的学弟学妹们~一定要来看哦~》
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/SuperMetalMax/p/6187274.html
Copyright © 2011-2022 走看看