Экранирование строки Unicode в XmlElement, несмотря на написание XML в UTF-8

Для данногоXmlElementМне нужно иметь возможность установить внутренний текст в экранированную версию строки Unicode, несмотря на то, что документ в конечном итоге кодируется в UTF-8. Есть ли способ достичь этого?

Вот простая версия кода:

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

Ожидаемое:

<root>&#xF1;</root>

Актуально:

<root>ñ</root>

ИспользуяXmlWriter прямо и зоветWriteRaw(text) работает, но у меня есть доступ только кXmlDocumentи сериализация произойдет позже. НаXmlElement, InnerText избегает& в&amp;, как и ожидалось, и настройкаValue бросает исключение.

Есть ли способ установить внутренний текстXmlElement к экранированному тексту ASCII, независимо от того, какая кодировка в конечном итоге используется? Я чувствую, что, должно быть, я упускаю что-то очевидное, или это просто невозможно.

Ответы на вопрос(1)

Ваш ответ на вопрос