using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace ButcherFactory.BO.Utils { public static class XmlUtil { static string config = "Config"; public static void SerializerObjToFile(object obj, string fileName = "") { if (string.IsNullOrWhiteSpace(fileName)) { fileName = Path.Combine(config, obj.GetType().Name + ".xml"); } var ser = new XmlSerializer(obj.GetType()); using (var stream = File.Open(fileName, FileMode.Create)) { ser.Serialize(stream, obj); } } public static T DeserializeFromFile(string fileName = "") where T : new() { if (string.IsNullOrWhiteSpace(fileName)) { fileName = Path.Combine(config, typeof(T).Name + ".xml"); } if (!File.Exists(fileName)) { return new T(); } using (var reader = new StreamReader(fileName)) { var xs = new XmlSerializer(typeof(T)); try { object obj = xs.Deserialize(reader); return (T)obj; } catch { return new T(); } finally { reader.Close(); } } } public static T XmlDeserializeObject(string xmlOfObject) where T : class,new() { using (MemoryStream ms = new MemoryStream()) { using (StreamWriter sr = new StreamWriter(ms, Encoding.UTF8)) { try { sr.Write(xmlOfObject); sr.Flush(); ms.Seek(0, SeekOrigin.Begin); XmlSerializer serializer = new XmlSerializer(typeof(T)); return serializer.Deserialize(ms) as T; } catch { return new T(); } } } } } }