我々は、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で再現