Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XML加载到memorystream中_C#_Xml_Dataset_Memorystream - Fatal编程技术网

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作为type
String
传递。