Escape de la cadena Unicode en XmlElement a pesar de escribir XML en UTF-8
Para una dadaXmlElement
, Necesito poder configurar el texto interno a una versión escapada de la cadena Unicode, a pesar de que el documento finalmente se codificó en UTF-8. ¿Hay alguna manera de lograr esto?
Aquí hay una versión simple del código:
const string text = "ñ";
var document = new XmlDocument {PreserveWhitespace = true};
var root = document.CreateElement("root");
root.InnerXml = text;
document.AppendChild(root);
var settings = new XmlWriterSettings {Encoding = Encoding.UTF8, OmitXmlDeclaration = true};
using (var stream = new FileStream("out.xml", FileMode.Create))
using (var writer = XmlWriter.Create(stream, settings))
document.WriteTo(writer);
Esperado:
<root>ñ</root>
Real:
<root>ñ</root>
Usando unaXmlWriter
directamente y llamandoWriteRaw(text)
funciona, pero solo tengo acceso a unXmlDocument
, y la serialización pasa después. Sobre elXmlElement
, InnerText
se escapa del&
a&
, como se esperaba, y ambientaciónValue
lanza una excepción.
¿Hay alguna manera de configurar el texto interno de unaXmlElement
al texto ASCII de escape, independientemente de la codificación que se utilice finalmente? Siento que debo estar perdiendo algo obvio, o simplemente no es posible.