在构造之后将XDeclaration添加到XDocument

Pet*_*ter 4 .net c# xml xml-serialization xmlserializer

我有一个XmlSerializer,我用它来将对象序列化为XDocument.

var doc = new XDocument();
using (var writer = doc.CreateWriter())
{
   xmlSerializer.Serialize(writer, object);
}
Run Code Online (Sandbox Code Playgroud)

完成此操作后,我想添加一个XDeclaration:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Run Code Online (Sandbox Code Playgroud)

我构建了这个XDeclaration,如下所述:

var decl = new XDeclaration("1.0", "UTF-8", "no");
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将此XDeclartion添加到我的XDocument时,我收到以下错误:

System.ArgumentException : Non white space characters cannot be added to content.
Run Code Online (Sandbox Code Playgroud)

我搜索谷歌已经有一段时间了,但我发现只是将XDeclaration添加到XDocument的构造函数中,在我的情况下(当用XmlWriter填充它时)是不可接受的.

Kir*_*huk 6

使用属性XDocument.Declaration


编辑:

示例代码:

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"));
Run Code Online (Sandbox Code Playgroud)

此代码生成以下输出:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<int>1</int>
Run Code Online (Sandbox Code Playgroud)