using System.IO; using System.Text; using System.Xml; namespace InABox.Core { public static class XmlHelperExtentions { /// /// Loads a string through .Load() instead of .LoadXml() /// This prevents character encoding problems. /// /// /// /// public static void LoadString(this XmlDocument xmlDocument, string xmlString, Encoding? encoding = null) { encoding ??= Encoding.UTF8; // Encode the XML string in a byte array var encodedString = encoding.GetBytes(xmlString); // Put the byte array into a stream and rewind it to the beginning using (var ms = new MemoryStream(encodedString)) { ms.Flush(); ms.Position = 0; // Build the XmlDocument from the MemorySteam of UTF-8 encoded bytes xmlDocument.Load(ms); } } } }