Сохранение файла Linq в Xml как ANSI вместо UTF-8 в C # (плющ) - PullRequest
4 голосов
/ 12 февраля 2010

В C # мне нужно создать XML-файлы для использования с Ivy и NAnt, но у меня возникают трудности с получением правильной кодировки в выходном файле.

Если я использую XElement .Save ("C: \ foo.xml"), я получаю правильный выглядящий файл, но Ivy и / или NAnt расстраиваются, поскольку файл фактически сохраняется с использованием UTF -8 но мне действительно нужно сохранить его как ANSI, чтобы иметь возможность его использовать.

В настоящее время у меня есть задание, которое должно использовать .ToString (), чтобы получить текст, а затем использовать StreamWriter, чтобы записать его в файл.

В идеале я хотел бы установить формат во время .Save (), но не могу найти какую-либо информацию по этому вопросу.

Спасибо.

1 Ответ

10 голосов
/ 24 февраля 2010

XDocument.Save имеет ряд перегрузок.

Запись через правильно сконструированный XmlWriter позволяет нам выбирать кодировку ASCII.

var doc = XDocument.Parse( "<foo>&#160;bar&#7800;baz</foo>" );

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new ASCIIEncoding();
using (var writer = XmlWriter.Create( "xelement.xml", settings )) {
    doc.Save( writer );
}
...