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

如题所述

序列化或反序列化成一个字符串:方法一:序列化: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();}反序列化: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;}方法二:/// <summary/// 对象序列化成 XML String/// </summarypublic 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 反序列化成对象/// </summarypublic 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就可以了如:string strFile = @c:/book.xml;using (FileStream fs = new FileStream(strFile, FileMode.Create)){XmlSerializer formatter = new XmlSerializer(typeof(T));formatter.Serialize(fs, entity);}附:其实还可以直接用SringWriterStringBuilder sb = new StringBuilder();System.IO.StringWriter writer = new System.IO.StringWriter(sb);
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答