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         }

 

转载于:https://www.cnblogs.com/Mengyl/p/3741530.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值