| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using System.IO;
- using System.Text;
- using System.Xml.Serialization;
- namespace SKMC.Api.Common.File
- {
- /// <summary>
- /// XML序列化与反序列化工具类
- /// </summary>
- public class XmlSerializerTool
- {
- private static readonly object locker = new object();
- public static T Read<T>(string content) where T : class
- {
- if (String.IsNullOrEmpty(content)) return default;
- StringReader stringReader = new StringReader(content);
- try
- {
- XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
- return xmlSerializer.Deserialize(stringReader) as T;
- }
- finally
- {
- if (stringReader != null) stringReader.Close();
- }
- }
- public static T ReadFrom<T>(string path) where T : class
- {
- T local = default;
- if (!System.IO.File.Exists(path))
- {
- return local;
- }
- FileStream fileStream = null;
- try
- {
- fileStream = new FileStream(path, FileMode.Open);
- XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
- return xmlSerializer.Deserialize(fileStream) as T;
- }
- finally
- {
- if (fileStream != null) fileStream.Close();
- }
- }
- public static string Save<T>(T obj) where T : class
- {
- if (obj == null) return null;
- MemoryStream memoryStream = null;
- try
- {
- XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
- ns.Add("", "");
- XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
- memoryStream = new MemoryStream();
- xmlSerializer.Serialize(memoryStream, obj, ns);
- return UTF8Encoding.UTF8.GetString(memoryStream.ToArray());
- }
- finally
- {
- if (memoryStream != null) memoryStream.Close();
- }
- }
- public static void SaveTo<T>(string path, T obj)
- {
- object locker = XmlSerializerTool.locker;
- lock (locker)
- {
- FileStream fileStream = null;
- try
- {
- XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
- ns.Add("", "");
- XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
- fileStream = new FileStream(path, FileMode.Create);
- xmlSerializer.Serialize(fileStream, obj, ns);
- }
- finally
- {
- if (fileStream != null) fileStream.Close();
- }
- }
- }
- }
- }
|