4

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

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

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

理想情况下,我想在 .Save() 期间设置格式,但找不到任何相关信息。

谢谢。

4

1 回答 1

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 );
}
于 2010-02-24T04:49:26.020 回答