Я почему-то не могу найти здесь никакого рабочего ответа, поэтому вот реальное решение, которое выведет нужную кодировку в заголовок:
private void CreateXml()
{
XmlTextWriter xmlwriter = new XmlTextWriter("c:\\test.xml", Encoding.GetEncoding("iso-8859-1"));
XDocument xdoc = new XDocument(
new XElement("Test")
);
xdoc.Save(xmlwriter);
xmlwriter.Close();
}
Причина, по которой вы получаете UTF-16, заключается в том, что строки кодируются с помощью UTF-16 в памяти, и если вы не укажете кодировку для вывода XML, она будет переопределять кодировку в XML заголовок, чтобы соответствовать фактической используемой кодировке. Использование XmlTextWriter
является одним из способов указания другой кодировки.
Вы также можете позволить XmlTextWriter
записать в MemoryStream
и затем преобразовать его обратно в string
, если вам нужно выполнить всю операцию в памяти.