オブジェクトとC#のXML変換

例えば:

  1.オブジェクトターンXML(XMLに標的配列)

文字列 strImage = XmlSerializeHelper.Serialize <リスト<ImageSingle >>(イメージリスト)。
コードの表示

  2.xml転送オブジェクト(デシリアライズ)

画像bojimag = XmlSerializeHelper.DeSerialize <画像>(strimage)。
コードの表示

 

カテゴリ以下のプロセスシーケンス:

使用してシステムを。
使用してSystem.Collections.Genericを。
使用してSystem.Linqのを。
使用してSystem.Textのを。
使用してSystem.Xml.Serializationを。
使用してSystem.IOを。
使用してSystem.Xmlのを。
使ってSystem.Text.RegularExpressionsを。

名前空間ヘルパー
{ 
    パブリック クラスXmlSerializeHelper 
    { 

        パブリック 静的 文字列シリアライズ<T> (T OBJ)
        { 
            リターンシリアライズ<T> (OBJ、Encoding.UTF8)。
        } 

        // 对象转XML 
        のパブリック 静的 ストリング ObjToXml(オブジェクトOBJ)
        { 
            使用(MemoryStreamをストリーム= 新しいのMemoryStream())
            { 
                XmlSerializerをXML = 新しいXmlSerializerを(obj.GetType())。
                xml.Serialize(ストリーム、OBJ)。
                Stream.Position = 0 ; 
                StreamReaderをSR = 新しいStreamReaderを(ストリーム);
                文字列 STR = sr.ReadToEnd()。
                リターンSTR。
            } 

        } 

        ///  <要約>   
        ///实体对象序列化成XML字符串  
         ///  </要約>   
        ///  <typeparam名= "T"> </ typeparam>   
        ///  <PARAM NAME = "OBJ"> </ PARAM>   
        ///  <戻ります> </リターン>   
        パブリック 静的 文字列シリアライズ<T> (T OBJ、エンコーディングエンコーディング)
        { 
            試み
            { 

                場合(OBJ == NULL スロー 新しい例外ArgumentNullException(" OBJを" )。

                VaRの SER = 新しいXmlSerializerを(obj.GetType());
                MemoryStream())
                { 
                    使用VARのライター= 新しいてXmlTextWriter(MS、コード))
                    { 
                        writer.Formatting = Formatting.Indented。
                        ser.Serialize(作家、OBJ)。
                    } 
                    VAR XML = encoding.GetString(ms.ToArray())。
                    XML = xml.Replace(" のxmlns:XSI = \"のhttp://www.w3.org/2001/XMLSchema-instance \」""" ); 
                    XML = xml.Replace(" のxmlns:XSD = \"のhttp://www.w3.org/2001/XMLSchema \」" " " ); 
                    XML = Regex.Replace(XML、@" \ S {2} " " " ); 
                    XML = Regex.Replace(XML、@" \ {S} 1 />。" " /> " );
                     戻り、XML 
                } 
            } 
            キャッチ(例外EX)
            { 
                スローEX; 
            } 
        } 

        ///  <まとめ>   
        /// デシリアライゼーションXML文字オブジェクト、デフォルトはUTF-8エンコーディングである  
         ///  </要約>  
        /// <typeparam名= "T"> </ typeparam>   
        ///  <PARAM NAME = "XML"> </ PARAM>   
        ///  <戻る> </戻り>   
        パブリック 静的 Tデシリアライズ<T>(文字列XML)
             ここで、 T :新しい()
        { 
            戻りデシリアライズ<T> (XML、Encoding.UTF8)。
        } 

        ///  <要約>   
        /// 反序列化XML字符为对象  
         ///  </要約>   
        ///  <typeparam名= "T"> </ typeparam>   
        ///  <PARAM NAME = "XML"> </ param>の  
        ///  <PARAM NAME = "エンコード"> <  
           
         Tデシリアライズ<T>(文字列XMLエンコーディングエンコーディング)
             ここで、 T:新しい()
        { 
            試み
            { 
                VAR mySerializer = 新しい XmlSerializerを(typeof演算(T))。
                使用VARの MS = 新規のMemoryStream(encoding.GetBytes(XML)を))
                { 
                    使用VARの SR = 新しいStreamReaderを(MS、コード))
                    { 
                        リターン(T)mySerializer.Deserialize(SR)。
                    } 
                } 
            }
            キャッチ(例外e)
            { 
                戻り デフォルト(T)。
            } 

        }   
    } 
}
XmlSerializeHelper.cs

 

おすすめ

転載: www.cnblogs.com/muyeh/p/11832298.html