2010-09-10 45 views
3

我使用以下方法將各種對象序列化爲XML。然後我將XML寫入一個文件。所有對象都具有正確的[DataContract][DataMember]屬性。使用DataContractSerializer序列化時缺少XML的末尾

public static string Serialize<T>(T item) 
    { 
     var builder = new StringBuilder(); 
     var serializer = new DataContractSerializer(typeof(T)); 

     using (var xmlWriter = XmlWriter.Create(builder)) 
     { 
      serializer.WriteObject(xmlWriter, item); 
      return builder.ToString(); 
     } 
    } 

序列化工作正常,但是,我錯過了內容的結尾。即,該字符串不包含完整的XML文檔:結尾被截斷。有時候字符串會在標籤中間結束。

似乎沒有會導致問題的混合長度:我有不完整的18k字符串,我也有不完整的80k字符串。

XML結構相當簡單,只有大約6-8個節點深。

我錯過了什麼嗎?

回答

9

xmlWriter在您呼叫ToString()的點不刷新;嘗試:

using (var xmlWriter = XmlWriter.Create(builder)) 
    { 
     serializer.WriteObject(xmlWriter, item); 
    } 
    return builder.ToString(); 

這確實的Dispose()ToString()xmlWriter,這意味着它將刷新所有緩衝的數據輸出到輸出(builder在這種情況下)。

相關問題