C# 将XML加载到memorystream中
因此,我尝试使用下面的代码从C# 将XML加载到memorystream中,c#,xml,dataset,memorystream,C#,Xml,Dataset,Memorystream,因此,我尝试使用下面的代码从strInstallDataSet字符串中获取一个简单的数据集,当我连接了调试器时,我可以看到strInstallDataSet有数据,byteArray有数据,但即使在读取msDataset后,长度仍然是0,我试着在阅读前后设置位置,但它仍然无法获取任何数据。有什么想法吗 MemoryStream msDataset = new MemoryStream(); if (strInstallDataSet != null) { // Conv
strInstallDataSet
字符串中获取一个简单的数据集,当我连接了调试器时,我可以看到strInstallDataSet
有数据,byteArray
有数据,但即使在读取msDataset
后,长度仍然是0,我试着在阅读前后设置位置,但它仍然无法获取任何数据。有什么想法吗
MemoryStream msDataset = new MemoryStream();
if (strInstallDataSet != null)
{
// Convert string to byte array.
byte[] byteArray = Encoding.ASCII.GetBytes(strInstallDataSet);
msDataset.Read(byteArray, 0, byteArray.Length);
// Put stream back into dataset object.
dsInstallData.ReadXml(msDataset);
msDataset.Close();
msDataset.Dispose();
}
您没有向流写入任何内容,只读取
msDataset.Read
旁注1:您使用的是非常低级的方法—有些读写器类已经正确地处理了编码
旁注2:使用“using”而不是手动调用Close或Dispose(不要同时调用其中的两个,因为它们的作用完全相同)。您误解了
MemoryStream.Read()
的作用,它读入字节数组,而不是MemoryStream
你需要MemoryStream.Write()
在你有MemoryStream.Read()的地方
或者更好的是
MemoryStream xmlMemoryStream = new MemoryStream(byteArray);
您可能希望执行以下操作:
using(StringReader reader = new StringReader(strInstallDataSet))
{
dsInstallData.ReadXml(reader);
}
您必须使用写入方法而不是读取方法。我认为您想将字节数组写入内存流。使用StringReader
,而不是MemoryStream
。在任何情况下,都不应该将XML作为typeString
传递。