private void FormatText()
        {
            if (string.IsNullOrEmpty(txtXmlContent.Text))
            {
                return;
            }

            var doc = new XmlDocument();

            using (var ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(txtXmlContent.Text)))
            {
                using (var ms2 = Utility.RemoveUTF8BOM(ms))
                {
                    doc.Load(ms2);
                }
            }

            using (var ms = new MemoryStream())
            {
                using (var uw = new Utf8XmlWriter(ms))
                {
                    if (!doc.ChildNodes.OfType <XmlDeclaration>().Any())
                    {
                        uw.WriteStartDocument();
                    }
                    doc.WriteTo(uw);
                    uw.Flush();
                }
                txtXmlContent.Text = System.Text.Encoding.UTF8.GetString(ms.GetBuffer()).Trim().Trim('\0');
            }
        }
 /// <summary>
 /// Serializes the given object as a UTF-8 encoded XML string. Any BOM is stripped from the XML string
 /// </summary>
 /// <param name="serializer"></param>
 /// <param name="o"></param>
 /// <returns></returns>
 internal static string NormalizedSerialize(XmlSerializer serializer, object o)
 {
     using (var ms = MemoryStreamPool.GetStream())
     {
         using (var xw = new Utf8XmlWriter(ms))
         {
             serializer.Serialize(xw, o);
             using (var ms2 = RemoveUTF8BOM(ms))
             {
                 using (var sr = new StreamReader(ms2))
                 {
                     return(sr.ReadToEnd());
                 }
             }
         }
     }
 }