Сохранение Linq в XML-файл как ANSI вместо UTF-8 в C # (Ivy)
-
20-09-2019 - |
Вопрос
В C # мне нужно создать XML-файлы для использования с Ivy и NAnt, но у меня возникают трудности с получением правильной кодировки в выходном файле.
Если я использую xelement's .Save("C:\foo.xml"), я получаю правильное глядя файл, но Ivy и / или NAnt расстраиваются, так как файл фактически сохранен с использованием UTF-8, но мне на самом деле нужно сохранить его как ANSI, чтобы иметь возможность его использовать.
В настоящее время у меня есть решение, которое заключается в использовании .toString() для получения текста, а затем с помощью StreamWriter для записи его в файл.
В идеале я хотел бы задать формат во время .Save(), но не могу найти никакой информации по этому поводу.
Спасибо.
Решение
XDocument.Сохранить имеет ряд перегрузок.
Запись с помощью правильно сконструированного XmlWriter позволяет нам выбирать кодировку ASCII.
var doc = XDocument.Parse( "<foo> barṸbaz</foo>" );
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new ASCIIEncoding();
using (var writer = XmlWriter.Create( "xelement.xml", settings )) {
doc.Save( writer );
}