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
任何幫助,不勝感激!
memoryStream呢,它有預期的長度之前,轉換爲字符串? –