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 );

  • 相关阅读:
    Django——不同版本
    04爬取拉勾网Python岗位分析报告
    24 两两交换链表中的节点
    UniGUI学习之UniImage(39)
    Delphi7开发简单文件传输
    Javaday03(补充day02运算符,流程控制)
    java中代码块,构造方法和普通方法的代码执行顺序
    +=隐式类型转换
    关于switch中的default
    Java操作JSON数据(5)--jettison操作JSON数据
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/6182328.html
Copyright © 2011-2022 走看看