2011-06-27 10 views
4

XDocumentにオブジェクトをシリアル化するために使用するXmlSerializerがあります。XDecumentをXDocumentに追加した後に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

@Peter、私は私の答えを更新しました –

+0

それから私は別のものが欠けています。 は、私はあなたのコードをコピーしたが、私の出力は次のようになります。 'の<?xml version = "1.0" エンコード= "UTF-16" スタンドアロン= "なし"?> ' – Peter

+0

@Peter、信じられない –

関連する問題