Uciekanie łańcucha Unicode w XmlElement pomimo zapisywania XML w UTF-8

Dla danegoXmlElement, Muszę być w stanie ustawić tekst wewnętrzny na ucieczkową wersję ciągu Unicode, mimo że dokument jest ostatecznie kodowany w UTF-8. Czy jest jakiś sposób na osiągnięcie tego?

Oto prosta wersja kodu:

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);

Spodziewany:

<root>&#xF1;</root>

Rzeczywisty:

<root>ñ</root>

Korzystanie zXmlWriter bezpośrednio i dzwoniącWriteRaw(text) działa, ale mam tylko dostęp doXmlDocument, a serializacja nastąpi później. NaXmlElement, InnerText ucieka& do&amp;, zgodnie z oczekiwaniami i ustawienieValue zgłasza wyjątek.

Czy jest jakiś sposób na ustawienie wewnętrznego tekstuXmlElement do ukrytego tekstu ASCII, niezależnie od kodowania, które jest ostatecznie używane? Czuję, że brakuje mi czegoś oczywistego, albo po prostu nie jest to możliwe.

questionAnswers(1)

yourAnswerToTheQuestion