C# 将XDeclaration添加到XDocument后';s构造

C# 将XDeclaration添加到XDocument后';s构造,c#,.net,xml,xml-serialization,xmlserializer,C#,.net,Xml,Xml Serialization,Xmlserializer,我有一个XmlSerializer,用于将对象序列化到XDocument var doc = new XDocument(); using (var writer = doc.CreateWriter()) { xmlSerializer.Serialize(writer, object); } 完成后,我想添加一个XDeclaration: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 但是,当我尝试将此XD

我有一个XmlSerializer,用于将对象序列化到XDocument

var doc = new XDocument();
using (var writer = doc.CreateWriter())
{
   xmlSerializer.Serialize(writer, object);
}
完成后,我想添加一个XDeclaration:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
但是,当我尝试将此XDeclartion添加到XDocument时,会出现以下错误:

System.ArgumentException : Non white space characters cannot be added to content.
我在Google上搜索了一段时间,但我所发现的只是将XDeclaration添加到XDocument的构造函数中,这在我的情况下(用XmlWriter填充时)是不可接受的。

使用属性


编辑

示例代码:

var xmlSerializer = new XmlSerializer(typeof(int));

var doc = new XDocument();

var decl = new XDeclaration("1.0", "utf-8", "no");
doc.Declaration = decl;

using (var writer = doc.CreateWriter())
{
    xmlSerializer.Serialize(writer, 1);
}
doc.Save(File.Create("x.xml"));
此代码生成以下输出:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<int>1</int>

1.

那我就错过了别的东西。我复制了你的代码,但我的输出是:
1
尽管它在我的电脑上不起作用,但我相信这个答案是如此基本和琐碎,它一定是其他原因使我无法在我的XML上获得正确的XDeclaration。在一个更大的应用程序中,它只在保存之前刷新和关闭写入程序时对我有效。也没有文件。在保存函数中创建<代码>writer.Flush();writer.Close();doc.Save(“Import.xml”)
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<int>1</int>