Хитрость заключается в том, чтобы использовать XmlWriterSettings для указания кодировки при создании XmlWriter. Создает объявление автоматически.
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 при циклическом просмотре результата запроса к базе данных.