根级别的数据无效.第 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);
这是我收到错误的地方...
我在阅读同一文件时没有问题,而无需下载并将其保存到独立存储中......所以一定有错。
这个:
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);
}
}