我有一个包含 7,917 个字符的 XML 文档。它已使用 LINQ to XML 读入 XElement,但我需要将此 XElement 映射/转换/调整为字符串(以发送到 Web 服务)。
这是我的方法:
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;
}
}
}
当我调用此方法时,我可以使用 Intellisense 看到“xml”包含我文件的全部内容。但是,字符串 xmlText 在第 6144 个字符处被截断(正好是 6 KB)。因为 xmlText 被砍掉了,所以我丢失了 1773 个字符。
有谁知道为什么这个方法没有返回整个字符串?我将内存流缓冲区的长度设置为 21 MB 以确保它足够大(即使默认构造函数支持调整大小)。
如果我删除对 SetLength() 的调用,我会得到相同的行为。如果我删除对 Flush() 的调用,我也会得到相同的行为。
出于我的目的,我必须使用编码 ISO-8859-1,所以我不能更改为 UTF-8 或 16。
任何帮助是极大的赞赏!