zoukankan      html  css  js  c++  java
  • 一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】

    原文:http://blog.csdn.net/otong/article/details/7894059

    序列化或反序列化成一个字符串:

    方法一:

    序列化:

    [csharp] view plain copy
    1. public static string XMLSerialize<T>(T entity)  
    2.        {  
    3.            StringBuilder buffer = new StringBuilder();  
    4.              
    5.            XmlSerializer serializer = new XmlSerializer(typeof(T));  
    6.            using (TextWriter writer = new StringWriter(buffer))  
    7.            {  
    8.                serializer.Serialize(writer, entity);  
    9.            }  
    10.            
    11.            return buffer.ToString();  
    12.              
    13.        }  


    反序列化:

    [csharp] view plain copy
    1. public static T DeXMLSerialize<T>(string xmlString)  
    2.         {  
    3.             T cloneObject = default(T);  
    4.   
    5.             StringBuilder buffer = new StringBuilder();  
    6.             buffer.Append(xmlString);  
    7.   
    8.             XmlSerializer serializer = new XmlSerializer(typeof(T));  
    9.   
    10.             using (TextReader reader = new StringReader(buffer.ToString()))  
    11.             {  
    12.                 Object obj = serializer.Deserialize(reader);  
    13.                 cloneObject = (T)obj;  
    14.             }  
    15.   
    16.             return cloneObject;  
    17.         }  

    方法二:

    [csharp] view plain copy
    1. /// <summary>  
    2.     /// 对象序列化成 XML String  
    3.     /// </summary>  
    4.     public static string XmlSerialize<T>(T obj)  
    5.     {  
    6.         string xmlString = string.Empty;  
    7.         XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));  
    8.         using (MemoryStream ms = new MemoryStream())  
    9.         {  
    10.             xmlSerializer.Serialize(ms, obj);  
    11.             xmlString = Encoding.UTF8.GetString(ms.ToArray());  
    12.         }  
    13.         return xmlString;  
    14.     }  
    15.   
    16.     /// <summary>  
    17.     /// XML String 反序列化成对象  
    18.     /// </summary>  
    19.     public static T XmlDeserialize<T>(string xmlString)  
    20.     {  
    21.         T t = default(T);  
    22.         XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));  
    23.         using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))  
    24.         {  
    25.             using (XmlReader xmlReader = XmlReader.Create(xmlStream))  
    26.             {  
    27.                 Object obj = xmlSerializer.Deserialize(xmlReader);  
    28.                 t = (T)obj;  
    29.             }  
    30.         }  
    31.         return t;  
    32.     }  

    如果要序列化到一个文件,则使用FileStream就可以了

    如:

    string strFile = @"c:/book.xml";
                using (FileStream fs = new FileStream(strFile, FileMode.Create))
                {
                    XmlSerializer formatter = new XmlSerializer(typeof(T));
                    formatter.Serialize(fs, entity);
                }

    附:其实还可以直接用SringWriter

    StringBuilder sb = new StringBuilder();
    System.IO.StringWriter writer = new System.IO.StringWriter(sb);

    XmlSerializer formatter = new XmlSerializer(typeof(T));
    formatter .Serialize(writer,entity );

  • 相关阅读:
    objective c 中基本类型的操作
    [转载]Server.MapPath和Request.MapPath()的用法
    [转载]mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法
    [转载]忘记token怎么加入k8s集群
    ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded; 的解决办法
    [转载]AutoMapper 9.0的改造
    [转载]k8s注册节点提示Docker SystemdCheck]: detected cgroupfs" as the Docker cgroup dr iver. The r ecommended dr fiver is" systemd"
    [转载]Linux的Vi命令详解
    [转载]查看虚拟机里的Centos7的IP
    [转载]centos关闭swap分区
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/6182328.html
Copyright © 2011-2022 走看看