麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

通過XmlSerializer 實現XML的序列化與反序列化

2019-11-17 02:57:41
字體:
來源:轉載
供稿:網友

通過xmlSerializer 實現XML的序列化與反序列化

通過XmlSerializer 我們可以十分簡單的將Model與XML進行轉換

官文在點這里

幫助類

  1 using System;  2 using System.Text;  3 using System.Xml.Serialization;  4 using System.IO;  5 using System.Xml;  6   7 namespace BLL  8 {  9     public class XmlHelper 10     { 11         public static T DeSerializeModels<T>(string XMLStr, string eleName) 12         { 13             XmlRootAttribute Root = new XmlRootAttribute(); 14             Root.ElementName = eleName; 15  16             XmlSerializer xs = new XmlSerializer(typeof(T), Root); 17  18             StringReader strReader = new StringReader(XMLStr); 19             System.Xml.XmlReader r = new System.Xml.XmlTextReader(strReader); 20             try 21             { 22                 T Result = (T)xs.Deserialize(r); 23                 return Result; 24             } 25             finally 26             { 27                 strReader.Close(); 28                 r.Close(); 29             } 30         } 31  32         public static string SerializeModels<T>(T Models,string eleName) 33         { 34             StringBuilder sb = new StringBuilder(); 35             StringWriter w = new StringWriter(sb); 36  37             XmlRootAttribute Root = new XmlRootAttribute(); 38             Root.ElementName = eleName; 39  40             XmlSerializer sr = new XmlSerializer(typeof(T), Root); 41             sr.Serialize(w, Models); 42  43             w.Close(); 44  45             return sb.ToString(); 46         } 47  48         PRivate static void XmlSerializeInternal(Stream stream, object o, Encoding encoding) 49         { 50             if (o == null) 51                 throw new ArgumentNullException("o"); 52             if (encoding == null) 53                 throw new ArgumentNullException("encoding"); 54  55             XmlSerializer serializer = new XmlSerializer(o.GetType()); 56  57             XmlWriterSettings settings = new XmlWriterSettings(); 58             settings.Indent = true; 59             settings.NewLineChars = "/r/n"; 60             settings.Encoding = encoding; 61             settings.IndentChars = "    "; 62  63             using (XmlWriter writer = XmlWriter.Create(stream, settings)) 64             { 65                 serializer.Serialize(writer, o); 66                 writer.Close(); 67             } 68         } 69  70         /// <summary> 71         /// 將一個對象序列化為XML字符串 72         /// </summary> 73         /// <param name="o">要序列化的對象</param> 74         /// <param name="encoding">編碼方式</param> 75         /// <returns>序列化產生的XML字符串</returns> 76         public static string XmlSerialize(object o, Encoding encoding) 77         { 78             using (MemoryStream stream = new MemoryStream()) 79             { 80                 XmlSerializeInternal(stream, o, encoding); 81  82                 stream.Position = 0; 83                 using (StreamReader reader = new StreamReader(stream, encoding)) 84                 { 85                     return reader.ReadToEnd(); 86                 } 87             } 88         } 89  90         /// <summary> 91         /// 將一個對象序列化為XML字符串 92         /// </summary> 93         /// <param name="o">要序列化的對象</param> 94         /// <returns>序列化產生的XML字符串</returns> 95         public static string XmlSerialize(object o) 96         { 97             return XmlSerialize(o, Encoding.UTF8); 98         } 99 100         /// <summary>101         /// 將一個對象按XML序列化的方式寫入到一個文件102         /// </summary>103         /// <param name="o">要序列化的對象</param>104         /// <param name="UploadPath">保存文件路徑</param>105         /// <param name="encoding">編碼方式</param>106         public static void XmlSerializeToFile(object o, string path, Encoding encoding)107         {108             if (string.IsNullOrEmpty(path))109                 throw new ArgumentNullException("path");110 111             using (FileStream file = new FileStream(path, FileMode.Create, Fileaccess.Write))112             {113                 XmlSerializeInternal(file, o, encoding);114             }115         }116 117         /// <summary>118         /// 將一個對象按XML序列化的方式寫入到一個文件119         /// </summary>120         /// <param name="o">要序列化的對象</param>121         /// <param name="UploadPath">保存文件路徑</param>122         public static void XmlSerializeToFile(object o, string path)123         {124             XmlSerializeToFile(o, path, Encoding.UTF8);125         }126 127         /// <summary>128         /// 從XML字符串中反序列化對象129         /// </summary>130         /// <typeparam name="T">結果對象類型</typeparam>131         /// <param name="s">包含對象的XML字符串</param>132         /// <param name="encoding">編碼方式</param>133         /// <returns>反序列化得到的對象</returns>134         public static T XmlDeserialize<T>(string s, Encoding encoding)135         {136             if (string.IsNullOrEmpty(s))137                 throw new ArgumentNullException("s");138             if (encoding == null)139                 throw new ArgumentNullException("encoding");140 141             XmlSerializer xs = new XmlSerializer(typeof(T));142             using (MemoryStream ms = new MemoryStream(encoding.GetBytes(s)))143             {144                 using (StreamReader sr = new StreamReader(ms, encoding))145                 {146                     return (T)xs.Deserialize(sr);147                 }148             }149         }150 151         /// <summary>152         /// 從XML字符串中反序列化對象153         /// </summary>154         /// <typeparam name="T">結果對象類型</typeparam>155         /// <param name="s">包含對象的XML字符串</param>156         /// <returns>反序列化得到的對象</returns>157         public static T XmlDeserialize<T>(string s)158         {159             return XmlDeserialize<T>(s, Encoding.UTF8);160         }161 162         /// <summary>163         /// 讀入一個文件,并按XML的方式反序列化對象。164         /// </summary>165         /// <typeparam name="T">結果對象類型</typeparam>166         /// <param name="UploadPath">文件路徑</param>167         /// <param name="encoding">編碼方式</param>168         /// <returns>反序列化得到的對象</returns>169         public static T XmlDeserializeFromFile<T>(string path, Encoding encoding)170         {171             if (string.IsNullOrEmpty(path))172                 throw new ArgumentNullException("path");173             if (encoding == null)174                 throw new ArgumentNullException("encoding");175 176             string xml = File.ReadAllText(path, encoding);177             return XmlDeserialize<T>(xml, encoding);178         }179 180         /// <summary>181         /// 讀入一個文件,并按XML的方式反序列化對象。182         /// </summary>183         /// <typeparam name="T">結果對象類型</typeparam>184         /// <param name="UploadPath">文件路徑</param>185         /// <returns>反序列化得到的對象</returns>186         public static T XmlDeserializeFromFile<T>(string path)187         {188             return XmlDeserializeFromFile<T>(path, Encoding.UTF8);189         }190     }191 }
工具類

同時也可以通過設置Model的特性,靈活的控制序列化

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产精品免费视频 | 日韩午夜一区二区三区 | 九一免费版在线观看 | gril hd| 亚洲热线99精品视频 | chengrenzaixian| 一区二区三区视频在线观看 | 日韩视频1 | 羞羞视频免费入口网站 | 噜噜噜在线 | 久色成人| 九九精品影院 | 久久精品成人 | 久草亚洲视频 | 日日鲁夜夜视频热线播放 | 一级黄色大片在线观看 | 久久综合久久综合久久 | 91香蕉影视| 久久999久久 | 精品国产99久久久久久宅男i | 成人国产免费观看 | 国产91精品一区二区麻豆亚洲 | 999精品国产 | 日本欧美在线播放 | 麻豆一二区 | 久久久久久久久久久久久久av | 免费久久精品 | 日本中文一级片 | 欧美a v在线 | 欧美视频一区二区三区在线观看 | 免费男女视频 | 国产精品高潮99久久久久久久 | 久久9久久 | 成人在线高清视频 | 免费h片网站| 宅男噜噜噜66一区二区 | 成人国产精品一区 | 日本高清com| 欧美在线中文字幕 | 亚洲一级片在线观看 | 特片网久久 |