Escapezeichenfolge für Unicode in XmlElement, obwohl XML in UTF-8 geschrieben wurde
Für ein gegebenesXmlElement
Ich 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>ñ</root>
Tatsächlich:
<root>ñ</root>
Verwenden einesXmlWriter
direkt und anrufendWriteRaw(text)
funktioniert, aber ich habe nur Zugriff auf eineXmlDocument
und die Serialisierung erfolgt später. Auf derXmlElement
, InnerText
entgeht dem&
zu&
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.