2012-06-08 48 views
2

我有一個XML文檔,它是7,917個字符。它使用LINQ to XML讀入XElement,但我需要將此XElement映射/轉換/調整爲字符串(以發送到Web服務)。爲什麼MemoryStream限制爲6KB的數據?

這裏是我的方法:

public string AdaptXElementToString(XElement xml) 
    { 
     Encoding encoding = Encoding.GetEncoding(SpecializedEncodings.Iso88591); 

     using (MemoryStream memoryStream = new MemoryStream()) 
     { 
      XmlWriterSettings settings = new XmlWriterSettings { Encoding = encoding }; 

      memoryStream.SetLength(21*1024*1024); 

      using (XmlWriter writer = XmlWriter.Create(memoryStream, settings)) 
      { 
       xml.WriteTo(writer); 
       memoryStream.Flush(); 

       string xmlText = encoding.GetString(memoryStream.ToArray()); 
       return xmlText; 
      } 
     } 
    } 

當我把這種方法,我可以看到使用智能感知是「XML」有我的文件整個內容。但是,字符串xmlText在第6144個字符處(即完全是6 KB)被截斷。因爲xmlText正在被切斷,所以我輸了1773個字符。

有誰知道爲什麼這個方法沒有返回整個字符串?我將內存流緩衝區的長度設置爲21 MB,以確保它足夠大(即使默認構造函數支持調整大小)。

如果我刪除對SetLength()的調用,我會得到相同的行爲。如果我刪除對Flush()的調用,我也會得到相同的行爲。

對於我而言,我必須用編碼ISO-8859-1,所以我不能改變爲UTF-8或16

任何幫助,不勝感激!

+0

memoryStream呢,它有預期的長度之前,轉換爲字符串? –

回答

0

解決了問題:

use writer.Flush();不memoryStream.Flush()

相關問題