You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

90 lines
2.1 KiB

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<T>(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<T>(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();
}
}
}
}
public static string ReadAllText(string fileName)
{
var path = Path.Combine(config, fileName);
if (File.Exists(path))
{
return File.ReadAllText(path);
}
return null;
}
}
}