Escape da string Unicode no XmlElement apesar de escrever XML em UTF-8
Para um dadoXmlElement
Eu preciso ser capaz de definir o texto interno para uma versão de escape da seqüência de caracteres Unicode, apesar do documento sendo codificado em UTF-8. Existe alguma maneira de conseguir isso?
Aqui está uma versão simples do 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 umXmlWriter
diretamente e chamandoWriteRaw(text)
funciona, mas eu só tenho acesso a umXmlDocument
e a serialização acontece mais tarde. NoXmlElement
, InnerText
escapa do&
para&
, como esperado, e definindoValue
lança uma exceção.
Existe alguma maneira de definir o texto interno de umXmlElement
para o texto ASCII com escape, independentemente da codificação usada no final? Eu sinto que devo estar perdendo algo óbvio, ou simplesmente não é possível.