一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】

时间:2021-12-07 04:55:26

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

方法一:

序列化:

[csharp]

public static string XMLSerialize<T>(T entity)  

       {  

           StringBuilder buffer = new StringBuilder();  

             

           XmlSerializer serializer = new XmlSerializer(typeof(T));  

           using (TextWriter writer = new StringWriter(buffer))  

           {  

               serializer.Serialize(writer, entity);  

           }  

           

           return buffer.ToString();  

             

       }  


反序列化:

[csharp]

public static T DeXMLSerialize<T>(string xmlString)  

        {  

            T cloneObject = default(T);  

  

            StringBuilder buffer = new StringBuilder();  

            buffer.Append(xmlString);  

  

            XmlSerializer serializer = new XmlSerializer(typeof(T));  

  

            using (TextReader reader = new StringReader(buffer.ToString()))  

            {  

                Object obj = serializer.Deserialize(reader);  

                cloneObject = (T)obj;  

            }  

  

            return cloneObject;  

        }  

方法二:

[csharp]

/// <summary>  

    /// 对象序列化成 XML String  

    /// </summary>  

    public static string XmlSerialize<T>(T obj)  

    {  

        string xmlString = string.Empty;  

        XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));  

        using (MemoryStream ms = new MemoryStream())  

        {  

            xmlSerializer.Serialize(ms, obj);  

            xmlString = Encoding.UTF8.GetString(ms.ToArray());  

        }  

        return xmlString;  

    }  

  

    /// <summary>  

    /// XML String 反序列化成对象  

    /// </summary>  

    public static T XmlDeserialize<T>(string xmlString)  

    {  

        T t = default(T);  

        XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));  

        using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))  

        {  

            using (XmlReader xmlReader = XmlReader.Create(xmlStream))  

            {  

                Object obj = xmlSerializer.Deserialize(xmlReader);  

                t = (T)obj;  

            }  

        }  

        return t;  

    }  

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

如: