您可以創建您可以通過從應用程序中使用這樣的
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