using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection.PortableExecutable; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; using System.Xml.Serialization; namespace WIDESEA.Common { public class XMLSerializationTool { /// /// 发序列化成对象 /// /// /// /// public static T DeserializeXmlToObject(string receiveXml) { using (StreamReader reader = new StreamReader( new MemoryStream( Encoding.UTF8.GetBytes(receiveXml)), Encoding.Default)) { try { XmlSerializer serializer = new XmlSerializer(typeof(T)); T rel = (T)serializer.Deserialize(reader); return rel; } finally { reader.Close(); } } } //public static T DeserializeXmlToObjectBySub(string receiveXml) //{ // //XDocument document = XDocument.Load(receiveXml); // //var jsondata = document.Descendants().Where(x => x.Name == "string" && x.Value.StartsWith("{") && x.Value.EndsWith("}")).First().Value; // //receiveXml.Where(x => ); // //T json = JsonConvert.DeserializeObject(jsondata); // //return json; // //T rel = (T)serializer.Deserialize(reader); //} /// /// 序列化成xml文件格式 /// /// /// /// public static string SerializeObjectToXml(T obj) { string rel = string.Empty; using (MemoryStream ms = new MemoryStream()) { try { //去掉默认的 xmlns标签 XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); StreamWriter sw = new StreamWriter(ms); //设置UTF-8 XmlWriterSettings settings = new XmlWriterSettings(); settings.Encoding = Encoding.UTF8; settings.Indent = true; using (XmlWriter writer = XmlWriter.Create(sw, settings)) { XmlSerializer serializer = new XmlSerializer(typeof(T)); serializer.Serialize(writer, obj, ns); writer.Flush(); writer.Close(); } using (StreamReader sr = new StreamReader(ms)) { ms.Position = 0; rel = sr.ReadToEnd(); sr.Close(); } } finally { ms.Close(); } } ////设置UTF-8 //XmlWriterSettings xws = new XmlWriterSettings(); //xws.Encoding = Encoding.UTF8; //StringBuilder sb = new StringBuilder(); //XmlWriter xw = XmlWriter.Create(sb, xws); //XmlSerializer xs = new XmlSerializer(typeof(T)); //xs.Serialize(xw, obj, ns); //xw.Close(); return rel; } //public static string SerializeObjectToXml(T obj) //{ // string rel = string.Empty; // using (MemoryStream storedStream = new MemoryStream()) // { // try // { // //去掉默认的 xmlns标签 // XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); // ns.Add("", ""); // new XmlSerializer(typeof(T)).Serialize(storedStream, obj, ns); // storedStream.Position = 0; // using (StreamReader reader = new StreamReader(storedStream, Encoding.UTF8)) // { // try { rel = reader.ReadToEnd(); } // finally { reader.Close(); } // } // } // finally { storedStream.Close(); } // } // return rel; //} } }