根级别的数据无效.第 1 行,位置 1

本文关键字:位置 无效 数据 | 更新日期: 2023-09-27 18:35:04

我正在从互联网上下载一个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);

这是我收到错误的地方...

我在阅读同一文件时没有问题,而无需下载并将其保存到独立存储中......所以一定有错。

根级别的数据无效.第 1 行,位置 1

这个:

writer.WriteLine(e.Result);

不做你想的那样。它只是在Stream上调用ToString(),并将结果写入文件。

我建议您完全避免使用StreamWriter,只需从e.Result直接复制到IsolatedStorageFileStream

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);
    }
}