2011-07-25 12 views
2

私はstrInstallDataSet文字列からデータセットに簡単なデータセットを取得しようとしていますが、デバッガが接続されているときに以下のコードを使用してデータがあります。byteArrayにはデータがあります読んだ後には何もありません。長さは0になっています。私は読書の前と後の位置を設定しようとしましたが、まだデータを取得していません。何か案は?memorystreamにXMLをロードする

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(); 
    } 
+0

'MemoryStream'ではなく' StringReader'を使用してください。いずれにしても、XMLをString型として渡すべきではありません。それを得た –

答えて

2

をしたい:

using(StringReader reader = new StringReader(strInstallDataSet)) 
{ 
    dsInstallData.ReadXml(reader); 
} 
+0

。ありがとう。 – Liquidkristal

0

あなただけmsDataset.Readを...読んで、ストリームには何も書いていない

サイド注1:あなたは非常に低レベルのメソッドを使用している - 正しくの世話をするリーダー/ライターのクラスがあります既にエンコードしています。

サイドノート2:CloseまたはDisposeを手動で呼び出す代わりに「使用する」を使用します(2つを一緒に呼び出すと、まったく同じことが行われます)。

0

あなたは、MemoryStream.Read()が何をしているのか誤解しています。それは、メモリ配列ではなくバイト配列に読み込まれます。

あなたはおそらく、次の操作を行うことがしたいあなたはまだMemoryStream.Read()

またはそれ以上を持っているMemoryStream.Write() ...

MemoryStream xmlMemoryStream = new MemoryStream(byteArray); 
0

あなたが代わりにWriteメソッドを使用する必要があります。読書の私は、あなたのバイタイヤーをあなたの記憶ストリームに書きたいと思っています。

関連する問題