XmlWriterSettings对从XmlDocument创建的XmlWriter没有影响

时间:2010-02-10 18:35:59

标签: c# .net xml settings

我需要使用ISO Latin 1编码,但使用编写器设置下面的代码默认返回UTF8。我在这里缺少什么?

XmlDocument xmlDoc = new XmlDocument(); 
XmlWriterSettings settings = new XmlWriterSettings();
settings.ConformanceLevel = ConformanceLevel.Auto;
settings.Encoding = System.Text.Encoding.GetEncoding(28591);
using (XmlWriter writer = XmlWriter.Create(xmlDoc.CreateNavigato().AppendChild(), settings))
{
}

1 个答案:

答案 0 :(得分:1)

问题是底层流(在本例中为xmlDoc对象)使用的是UTF-8,这是.NET中的默认编码。

来自XmlWriterSettings的Encoding property的MSDN文档:

  

Encoding属性仅适用于使用指定的Stream或指定的文件名创建的XmlWriter实例。如果使用指定的TextWriter创建XmlWriter实例,则底层TextWriter的编码将覆盖Encoding属性。例如,如果此属性设置为特定XmlWriter的Unicode(UTF-16),但底层编写器是StreamWriter(派生自TextWriter),其编码设置为UTF-8,则输出将为UTF-8编码

要解决此问题,您需要使用Latin-1编码的流创建XmlWriter。我认为你不能使用XmlDocument