将Linq保存为Xml文件,而不是C#(Ivy)中的UTF-8

时间:2010-02-12 15:51:13

标签: utf-8 linq-to-xml nant ansi ivy

在C#中,我需要创建用于Ivy和NAnt的XML文件,但是在输出文件中难以获得正确的编码。

如果我使用XElement的.Save(“C:\ foo.xml”),我会得到正确的文件,但是Ivy和/或NAnt会感到沮丧,因为文件实际上是使用UTF-8但我实际上需要将其保存为ANSI才能使用它。

我目前有一个bodge,它使用.ToString()来获取文本,然后使用StreamWriter将其写入文件。

理想情况下,我想在.Save()期间设置格式,但无法找到有关此内容的任何信息。

感谢。

1 个答案:

答案 0 :(得分:10)

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 );
}