zoukankan      html  css  js  c++  java
  • 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         }
  • 相关阅读:
    【剑指offer】面试题16、反转链表
    【剑指offer】面试题15、链表中倒数第 K 个结点
    【剑指offer】面试题14、调整数组顺序使奇数位于偶数前面
    oracle sql与调优
    linux 常用命令记录 持续更新
    函数重载中形参的const
    mem_fun_ref和mem_fun的用法
    c++风格的格式化输出
    count_if函数里面的第三个参数的书写方式<<0926
    操作符重载(++,+,输入输出,强制类型转换)
  • 原文地址:https://www.cnblogs.com/Mengyl/p/3741530.html
Copyright © 2011-2022 走看看