using System.Reflection; using System.Xml.Serialization; using System.Text; namespace sodoff.Util; public class XmlUtil { public static T DeserializeXml(string xmlString) { var serializer = new XmlSerializer(typeof(T)); using (var reader = new StringReader(xmlString)) return (T)serializer.Deserialize(reader); } private class Utf8StringWriter : StringWriter { public override Encoding Encoding => Encoding.UTF8; } public static string SerializeXml(T xmlObject) { var serializer = new XmlSerializer(typeof(T)); using (var writer = new Utf8StringWriter()) { serializer.Serialize(writer, xmlObject); return writer.ToString(); } } public static string ReadResourceXmlString(string name) { string result = ""; var assembly = Assembly.GetExecutingAssembly(); string resourceName = assembly.GetManifestResourceNames().Single(str => str.EndsWith($"{name}.xml")); using (Stream stream = assembly.GetManifestResourceStream(resourceName)) using (StreamReader reader = new StreamReader(stream)) result = reader.ReadToEnd(); return result; } }