使用XStreamingElement编写大型XML文件时,是否可以声明字符编码?

时间:2009-11-11 00:51:37

标签: .net xml

我正在使用XDocument和XElement对象来编写一个大型XML文件(目前为8MB)。我想切换到XStreamingElement,这样我就可以在不将所有数据同时存储在内存中的情况下编写文件。不幸的是,我需要包含一个编码声明。如果不使用XDocument,我可以这样做吗?

1 个答案:

答案 0 :(得分:3)

技巧是在创建XmlWriter时使用XmlWriterSettings指定编码。它会自动生成声明。

var doc =
    new XStreamingElement("openerp",
        LoadReferenceData(),
        LoadAccounts(),
        LoadPartners(),
        LoadComponents());
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = Encoding.GetEncoding("latin1");
using (var writer = XmlWriter.Create(
    outputFilename.Text,
    settings))
{
    doc.WriteTo(writer);
}

每个Load方法都返回IEnumerable,并在循环访问数据库查询结果时使用yield return生成XML。