Robert Paciorek 7e5a90ba87 use utf-8 in xml headers from SerializeXml
we use ascii/utf-8 (not utf-16) encoding in files and network data
so XML header should be always `<?xml version="1.0" encoding="utf-8"?>`
2024-01-09 16:08:42 +00:00

36 lines
1.2 KiB
C#

using System.Reflection;
using System.Xml.Serialization;
using System.Text;
namespace sodoff.Util;
public class XmlUtil {
public static T DeserializeXml<T>(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>(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;
}
}