zoukankan      html  css  js  c++  java
  • C# XML 序列化 及 反序列化

    百科:序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

    public class Dog
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Sex { get; set; }
            public int Age { get; set; }
            public string ReturnString()
            {
                return Id + " " + Name + " " + Sex + " " + Age;
            }
        }
        
        class Program
        {
            static void Main(string[] args)
            {      
                
                List<Dog> list = new List<Dog>()
                {
                        new Dog(){Id=1,Name="旺财",Sex="男",Age=2},
                        new Dog(){Id=2,Name="哈士奇",Sex="女",Age=4},
                        new Dog(){Id=3,Name="藏獒",Sex="男",Age=5},                  
                };
                //序列化
                string xml = XmlSerialize<List<Dog>>(list);
                Console.WriteLine("***********  类--> XML  ************");
                Console.WriteLine(xml);
               
                //反序列化
                string strXML = "<ArrayOfDog><Dog><Id>1</Id><Name>旺财</Name><Sex>男</Sex><Age>2</Age></Dog><Dog><Id>2</Id><Name>哈士奇</Name><Sex>女</Sex><Age>4</Age></Dog><Dog><Id>3</Id><Name>藏獒</Name><Sex>男</Sex><Age>5</Age></Dog></ArrayOfDog>";
                List<Dog> listDog = DESerializer<List<Dog>>(strXML);
    
                Console.WriteLine("***********  XML--> 类  ************");
                foreach (Dog dog in listDog)
                {
                    Console.WriteLine(dog.ReturnString());
                }
                Console.ReadKey();
            }
    
            /// <summary>
            /// 反序列化
            /// </summary>
            public static T DESerializer<T>(string strXML) where T : class
            {
                try
                {
                    using (StringReader sr = new StringReader(strXML))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(T));
                        return serializer.Deserialize(sr) as T;
                    }
                }
                catch (Exception ex)
                {
                    return null;
                }
            }
    
            /// <summary>
            /// 序列化
            /// </summary>
            public static string XmlSerialize<T>(T obj)
            {
                using (StringWriter sw = new StringWriter())
                {
                    Type t = obj.GetType();
                    XmlSerializer serializer = new XmlSerializer(obj.GetType());
                    serializer.Serialize(sw, obj);
                    sw.Close();
                    return sw.ToString();
                }
            }
        }
    

    在这里插入图片描述

    C# 序列化与反序列化意义详解:
    ①序列化基本是指把一个对象保存到文件或流中,比如可以把文件序列化以保存到Xml中,或一个磁盘文件中

    ②序列化以某种存储形式使自定义对象持久化;
    ③将对象从一个地方传递到另一个地方。

    ④将类的值转化为一个一般的(即连续的)字节流,然后就可以将该流写到磁盘文件或任何其他流化目标上。

    ⑥序列是指将对象的实例状态存储到存储媒体的过程。
    在此过程中,先将对象的公共字段以及类的名称(包括类的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。

    ⑦用处非常大,用于数据传输,对象存贮等。

    推荐文章(点击进入)

  • 相关阅读:
    java项目配置域名(tomcat直接配置 or 使用nginx反向代理)
    java爬虫学习
    python爬虫
    log4j的日志级别(ssm中log4j的配置)
    Python中list,tuple,dict,set的区别和用法
    [转]C# Eval在asp.net中的用法及作用
    【转】一个运维经理的运维经验总结
    [转]使用 LVS 实现负载均衡原理及安装配置详解
    [转]33个网站足以使你成为一个天才
    搜狐邮箱想说爱你不容易!
  • 原文地址:https://www.cnblogs.com/wangqilong/p/10088359.html
Copyright © 2011-2022 走看看