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

时间:2012-05-21 18:44:55

标签: c# xml windows-phone-7

我从互联网上下载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 个答案:

答案 0 :(得分:8)

此:

writer.WriteLine(e.Result);

不符合您的想法。它只是在ToString()上调用Stream,并将结果写入文件。

我建议您完全避免使用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);
    }
}