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>ñ</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&
, 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.