1

インターネットから xml ファイルをダウンロードして、分離ストレージに保存しています。読み込もうとすると、エラーが発生します。

ルート レベルのデータは無効です。行 1、位置 1。

string tempUrl = "http://xxxxx.myfile.xml"; // changed
WebClient client = new WebClient();
client.OpenReadAsync(new Uri(tempUrl));
client.OpenReadCompleted += new OpenReadCompletedEventHandler(delegate(object sender, OpenReadCompletedEventArgs e) {

StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream("myfile.xml", FileMode.Create, FileAccess.Write, myIsolatedStorage));
 writer.WriteLine(e.Result);
 writer.Close();
});

これは、ファイルをダウンロードして保存する方法です...

そして、私はそれを次のように読もうとします:

IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("myfile.xml", FileMode.Open, FileAccess.Read);
XDocument xmlDoc = XDocument.Load(fileStream);

ここでエラーが発生します...

同じファイルをダウンロードして分離ストレージに保存しなくても、問題なく読み取ることができます...したがって、障害があるに違いありません。

4

1 に答える 1

8

これ:

writer.WriteLine(e.Result);

あなたが思っていることをしません。を呼び出しToString()Stream、結果をファイルに書き込むだけです。

完全に使用することは避け、直接から:にStreamWriterコピーすることをお勧めします。e.ResultIsolatedStorageFileStream

using (var output = new IsolatedStorageFileStream("myfile.xml", FileMode.Create, 
                                    FileAccess.Write, myIsolatedStorage))
{
    CopyStream(e.Result, output);
}

CopyStreamデータをコピーするだけの方法はどこにありますか?

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[8 * 1024];
    int read;
    while((read = input.Read (buffer, 0, buffer.Length)) > 0)
    {
        output.Write (buffer, 0, read);
    }
}
于 2012-05-21T18:51:27.173 に答える