2011-06-27 70 views
4

我有一个XmlSerializer,用于将对象序列化为XDocument。将XDeclaration添加到XDocument之后

var doc = new XDocument(); 
using (var writer = doc.CreateWriter()) 
{ 
    xmlSerializer.Serialize(writer, object); 
} 

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

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

我建造这个XDeclaration如下所述:

var decl = new XDeclaration("1.0", "UTF-8", "no"); 

然而,当我尝试添加该XDeclartion我的XDocument,我得到以下错误:

System.ArgumentException : Non white space characters cannot be added to content. 

我在Google上搜索了一段时间,但是我发现的所有内容都是将XDeclaration添加到XDocument的构造函数中,在我的情况下(使用XmlWriter填充时)是不可接受的。

回答

6

使用属性XDocument.Declaration


EDIT

样品的编号:

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> 
+0

@彼得,我更新了我的答案 –

+0

然后我错过了别的。 我复制的代码,但我的输出是: '<?XML版本= “1.0” 编码= “UTF-16” 独立= “否”?> ' – Peter

+0

@Peter,难以置信 –

相关问题