ホームページ > バックエンド開発 > C#.Net チュートリアル > C# XMLシリアル化クラスのコード例を詳しく解説

C# XMLシリアル化クラスのコード例を詳しく解説

黄舟
リリース: 2017-03-03 11:49:15
オリジナル
1568 人が閲覧しました

C# xml シリアル化クラスのコード例の詳細な説明

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using Imps.Services.CommonV4;


namespace Imps.Services.IDCService.Utility
{
    public class XMLSerializerEx
    {
        private static ITracing _tracing = TracingManager.GetTracing("XMLSerializerEx");
        /// <summary>
        /// 对象转换成XML
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string SaveXmlFromObj<T>(T obj)
        {
            if (obj == null) return null;
            XmlSerializer serializer = new XmlSerializer(typeof(T));


            XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
            namespaces.Add(string.Empty, string.Empty);
            
            MemoryStream stream = new MemoryStream();
            XmlTextWriter xtw = new XmlTextWriter(stream, Encoding.UTF8);
            xtw.Formatting = Formatting.Indented;
            try
            {
                serializer.Serialize(stream, obj,namespaces);
            }
            catch { return null; }


            stream.Position = 0;
            string returnStr = string.Empty;
            using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
            {
                string line = "";
                while ((line = sr.ReadLine()) != null)
                {
                    returnStr += line;
                }
            }
            return returnStr;
        }




        public static T LoadObjFromXML<T>(Stream s)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(T));
            try
            {
                return ((T)serializer.Deserialize(s));
            }
            catch { return default(T); }
        }


        /// <summary>
        /// XML反序列化到对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="data"></param>
        /// <returns></returns>
        public static T LoadObjFromXML<T>(string data)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                using (StreamWriter sw = new StreamWriter(stream, Encoding.UTF8))
                {
                    sw.Write(data);
                    sw.Flush();
                    stream.Seek(0, SeekOrigin.Begin);
                    return LoadObjFromXML<T>(stream);


                }
            }
        }
        
    }
}
ログイン後にコピー

上記は C# xml シリアル化クラスの詳細なコード例です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) を参照してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート