XMLシリアル化、逆シリアル化のヘルパークラス

我々は、XMLクラスに対処し、それを照合し、前もって構造のXMLを定義する必要がなく、オブジェクトタイプのシリアライズとデシリアライズのためにこのクラスを助け、将来の使用のためにここにそれを置くために、ネットワークから行く前に

  1  ///  <まとめ> 
  2      /// 関数:XMLシリアル化、逆シリアル化ヘルパークラス
   3      /// 説明:
   4      /// 作成:
   5      /// 作成:2014年3月13日
   6      / //  </要約> 
  7      パブリック 静的 クラスXmlHelper
   。8      {
   9          ///  <まとめ> 
10          /// プライベートメソッドにアクセスするための方法ではない外部
 11          /// 直列化されたオブジェクト
 12である         ///  </要約> 
13である         // /  <PARAM NAME = "ストリーム"> 流れ</ PARAM> 
14          ///  <PARAM NAME = "O"を>对象</ PARAM> 
15          ///  <PARAM NAME = "符号化"> 编码方式</ PARAM> 
16          プライベート 静的 ボイド XmlSerializeInternal(ストリームストリーム、オブジェクトO、エンコーディングエンコーディング)
 17          {
 18              であれば(O == NULL 19                   新しい例外ArgumentNullException(" O " );
20              であれば(符号化== NULL 21                  スロー 新しい例外ArgumentNullException(" 符号化" )。
22  
23             XmlSerializerをシリアライザ= 新しいXmlSerializerを(o.GetType());
24  
25              XmlWriterSettings設定= 新しいXmlWriterSettings()。
26              settings.Indent = 27              settings.NewLineChars = " \ R \ n " 28              settings.Encoding = エンコード。
29              settings.IndentChars = "     " ;
30  
31              使用(のXmlWriterライター= XmlWriter.Create(ストリーム、設定))
 32              {
 33                 serializer.Serialize(ライター、O);
 34れる                 writer.Close();
 35              }
 36          }
 37  
38である         ///  <まとめ> 
39          /// 標的配列の配列XML文字列に
 40          ///  </まとめ> 
41である         ///  <PARAM NAME = "O"> オブジェクトをシリアル化する</ PARAM> 
42である         ///  <PARAM NAME = "符号化"> コード</ PARAM> 
43である         ///  <戻り値> シリアライズXML文字列の生成</戻り値> 
44はある         公共の 静的な 文字列 XMLSERIALIZE(オブジェクトO、エンコーディングエンコーディング)
 45          {
 46を             使用して(MemoryStreamをストリーム= 新しいのMemoryStream())
 47              {
 48                  XmlSerializeInternal(ストリーム、O、符号化);
49  
50                  stream.Position = 0 51                  使用(= StreamReaderをリーダ新しいStreamReaderを(ストリーム、エンコーディング))
 52                  {
 53                      リターンreader.ReadToEnd()。
54                  }
 55              }
 56          }
 57  
58          /// <まとめ> 
59          /// ファイルにXMLシリアル化の方法で記述されたオブジェクトをシリアル
 60          ///  </要約> 
61である         ///  <PARAM NAME = "O"> オブジェクトをシリアル化するには< / PARAM> 
62である         ///  > <PARAM NAME = "パス" ファイルパス保存</ PARAM> 
63である         ///  <PARAM NAME = "符号化"> コード</ PARAM> 
64          公共 静的 ボイド XmlSerializeToFile(オブジェクト O、文字列パス、符号化符号)
 65          {
 66              IF文字列。
IsNullOrEmpty(パス)) 67                  スロー 新しいです例外ArgumentNullException(" パス" );
 68  
69              使用(のFileStreamファイル= 新しい新規のFileStream(パス、FileMode.Create、FileAccess.Write))
 70              {
 71は                 XmlSerializeInternal(ファイル、O、エンコーディング);
 72              }
 73れる         }
 74  
75          ///  <まとめ> 
76          /// XMLストリングからデシリアライズデシリアライズ、
 77          ///  </要約> 
78          ///  <typeParam名= "T"> 結果は、オブジェクトタイプ</ typeParam> 
79          ///  ます。<param name = "S">オブジェクトを含むXML文字列</ PARAM> 
80          ///  <PARAM NAME = "符号化"> コード</ PARAM> 
81          ///  <戻り値> オブジェクト得デシリアライズ</戻り> 
82          公共の 静的 T XmlDeserialize <T>(文字列S 、符号化の符号化)
 83          {
 84              IF.IsNullOrEmpty(S))
 85                   新しい新しい例外ArgumentNullException(" S " );
 86              IF(エンコーディング== NULL 87                   新しい新しい例外ArgumentNullExceptionザ("エンコーディング" );
 88  
89              のXmlSerializer mySerializer = 新しい XmlSerializerを(typeof演算(T));
 90              使用(MemoryStreamをミリ秒= 新規のMemoryStreamを(encoding.GetBytes(S)))
 91              {
 92                  使用(のStreamReaderのSR = 新しいStreamReaderを(MS、符号化))
 93                  {
 94                      リターン(T)mySerializer.Deserialize(SR);
 95                  }
 96              }
 97          }
 98  
99          ///  <要約> 
100          ///デシリアライズは、ファイルを読み込み、XMLの道デシリアライズさオブジェクトを押してください。
101          ///  </要約> 
102          ///  <typeParam名= "T"> 結果は、オブジェクトの種類</ typeParam> 
103          ///  <名前= "パス" param>のファイルパス</ PARAM> 
104          ///  < PARAM名= "符号化"> コード</ PARAM> 
105          ///  <戻り値> オブジェクト得デシリアライズ</戻り> 
106          パブリック 静的 T XmlDeserializeFromFile <T>(文字列パス、符号化符号)
 107          {
 108              IF文字列                  例外ArgumentNullException(" パス" )。
110              であれば(符号化== NULL 111                  スロー 新しい例外ArgumentNullException(" 符号化" )。
112  
113              文字列 XML = File.ReadAllText(パス、符号化);
114              リターン XmlDeserialize <T> (XML、符号化);
115          }
 116      }
コードの表示

 

ます。https://www.cnblogs.com/OnlyVersion/p/4503742.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33964094/article/details/93293225