Windows 8.1 序列化与反序列化
1 /// <summary> 2 /// 对象序列化成 XML String 3 /// </summary> 4 public static void XmlSerialize<T>(T obj, string fieldTickefolderName, string fieldTicketName) 5 { 6 string xmlString = string.Empty; 7 System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); 8 using (MemoryStream ms = new MemoryStream()) 9 { 10 xmlSerializer.Serialize(ms, obj); 11 xmlString = Encoding.UTF8.GetString(ms.ToArray(), 0, ms.ToArray().Length); 12 } 13 XmlDocument xmlDocument = new XmlDocument(); 14 xmlDocument.LoadXml(xmlString); 15 IAsyncOperation<StorageFolder> storageFolder = 16 ApplicationData.Current.LocalFolder.CreateFolderAsync(fieldTickefolderName, CreationCollisionOption.ReplaceExisting); 17 IAsyncOperation<StorageFile> xmlStorageFile = 18 ApplicationData.Current.LocalFolder.CreateFileAsync(fieldTickefolderName+"\\"+fieldTicketName, CreationCollisionOption.ReplaceExisting); 19 xmlDocument.SaveToFileAsync(xmlStorageFile.GetResults()); 20 21 22 23 }
1 ///// <summary> 2 ///// XML String 反序列化成对象 3 ///// </summary> 4 public static async Task<T> XmlDeserialize<T>(string fieldTickefolderName, string fieldTicketName) 5 { 6 try 7 { 8 StorageFolder storageFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync(fieldTickefolderName); 9 StorageFile xmlStorageFile = await storageFolder.GetFileAsync(fieldTicketName); 10 11 var stream = await xmlStorageFile.OpenAsync(FileAccessMode.Read); 12 XmlLoadSettings xmlloadsettings = new XmlLoadSettings(); 13 xmlloadsettings.ProhibitDtd = false; 14 xmlloadsettings.ResolveExternals = false; 15 XmlDocument doc = await XmlDocument.LoadFromFileAsync(xmlStorageFile, xmlloadsettings); 16 string xmlString = doc.GetXml(); 17 T t = default(T); 18 System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); 19 using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString))) 20 { 21 using (XmlReader xmlReader = XmlReader.Create(xmlStream)) 22 { 23 Object obj = xmlSerializer.Deserialize(xmlReader); 24 t = (T)obj; 25 } 26 } 27 return t; 28 29 } 30 catch (Exception ex) 31 { 32 33 throw new Exception(ex.Message); 34 } 35 36 }