在C#中,我需要创建用于Ivy和NAnt的XML文件,但是在输出文件中难以获得正确的编码。
如果我使用XElement的.Save(“C:\ foo.xml”),我会得到正确的看文件,但是Ivy和/或NAnt会感到沮丧,因为文件实际上是使用UTF-8但我实际上需要将其保存为ANSI才能使用它。
我目前有一个bodge,它使用.ToString()来获取文本,然后使用StreamWriter将其写入文件。
理想情况下,我想在.Save()期间设置格式,但无法找到有关此内容的任何信息。
感谢。
答案 0 :(得分:10)
XDocument.Save有许多重载。
通过正确构造的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 );
}