您可以创建您可以通过从应用程序中使用这样的
private async Task<T> ReadXml<T>(StorageFile xmldata)
{
XmlSerializer xmlser = new XmlSerializer(typeof(List<myclass>));
T data;
using (var strm = await xmldata.OpenStreamForReadAsync())
{
TextReader Reader = new StreamReader(strm);
data = (T)xmlser.Deserialize(Reader);
}
return data;
}
private async Task writeXml<T>(T Data, StorageFile file)
{
try
{
StringWriter sw = new StringWriter();
XmlSerializer xmlser = new XmlSerializer(typeof(T));
xmlser.Serialize(sw, Data);
using (IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
using (IOutputStream outputStream = fileStream.GetOutputStreamAt(0))
{
using (DataWriter dataWriter = new DataWriter(outputStream))
{
dataWriter.WriteString(sw.ToString());
await dataWriter.StoreAsync();
dataWriter.DetachStream();
}
await outputStream.FlushAsync();
}
}
}
catch (Exception e)
{
throw new NotImplementedException(e.Message.ToString());
}
}
编写XML和普通的静态方法只需使用
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("data.xml",CreationCollisionOption.ReplaceExisting);
await writeXml(Data,file);
和读取XML使用
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("data.xml");
Data = await ReadXml<List<myclass>>(file);
这与Windows 8或任何操作系统无关。你只需要将正确的参数传递给构造函数。当它说它需要一个'Stream'时,你必须使用一个扩展'Stream'的类。我建议你* google *关于'Stream'。我得到的第一个结果显示了如何使用它的视频(http://www.youtube.com/watch?v=QKGjWMlba9s) – MilkyWayJoe 2012-04-24 02:15:21
感谢您的快速回复,但实际上我知道如何使用StreamWriter类,但在这种情况下,我创建了一个Windows Metro样式项目,并且我正在使用XAML,而StreamWriter类不能像以前在Windows窗体应用程序中一样工作,我只是遇到了这个错误,甚至我尝试了你建议(创建一个扩展Stream类的类),它只是实现空方法,并没有一个方法接收作为参数的流将被创建的路径... – 2012-04-24 02:37:27
...,我在谷歌中找到的所有,只显示我知道如何创建StreamWriter对象的方式,我找不到任何指示如何在Windows Metro项目中创建StreamWriter或Stream的引用。有人在Windows Metro项目中使用Streams,使用StreamWriter编写文件的代码如何? – 2012-04-24 02:38:03