Escapezeichenfolge für Unicode in XmlElement, obwohl XML in UTF-8 geschrieben wurde

Für ein gegebenesXmlElementIch muss in der Lage sein, den inneren Text auf eine maskierte Version der Unicode-Zeichenfolge festzulegen, obwohl das Dokument letztendlich in UTF-8 codiert ist. Gibt es eine Möglichkeit, dies zu erreichen?

Hier ist eine einfache Version des Codes:

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

Erwartet:

<root>&#xF1;</root>

Tatsächlich:

<root>ñ</root>

Verwenden einesXmlWriter direkt und anrufendWriteRaw(text) funktioniert, aber ich habe nur Zugriff auf eineXmlDocumentund die Serialisierung erfolgt später. Auf derXmlElement, InnerText entgeht dem& zu&amp;wie erwartet und EinstellungValue wirft eine Ausnahme.

Gibt es eine Möglichkeit, den inneren Text einesXmlElement zu dem maskierten ASCII-Text, unabhängig von der letztendlich verwendeten Codierung? Ich habe das Gefühl, etwas Offensichtliches zu vermissen, oder es ist einfach nicht möglich.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage