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         }

 

posted @ 2014-05-21 16:18  FlashMeng  阅读(205)  评论(0编辑  收藏  举报