Вы никогда не смываете и не закрываете писателя.(Я бы обычно предлагал закрыть программу записи, но это также закроет поток, что может быть не тем, что вы хотите.) Просто добавьте:
writer.Flush();
в конце метода.
Обратите внимание, что вы можете удалить объявление XML из XDocument
, если хотите.Например:
XDocument doc = new XDocument
(new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Root", "content"));
doc.Save(Console.Out); // Includes <? xml ... ?>
doc.Declaration = null;
doc.Save(Console.Out); // No declaration...
Это должно упростить задачу:
public void SerializeToStream(Stream stream)
{
var xml = // Linq to xml code here
xml.Declaration = null;
xml.Save(stream);
}