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

Bre*_*gby 4 nant ansi utf-8 linq-to-xml ivy

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

如果我使用的XElement的.Save("C:\ foo.xml"),我得到正确的文件,但Ivy和/或恶性得到不高兴,因为文件是用实际保存UTF-8,但我真的需要保存作为ANSI,以便能够使用它.

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

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

谢谢.

Lac*_*che 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 );
}
Run Code Online (Sandbox Code Playgroud)