序列化,反序列化(xml)字符串

简单方法:

/// <summary>
        /// 将object对象序列化成XML
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static string ObjectToXML(object o)
        {
            XmlSerializer ser = new XmlSerializer(o.GetType());
            MemoryStream mem = new MemoryStream();
            XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);
            ser.Serialize(writer, o);
            writer.Close();
            return Encoding.Default.GetString(mem.ToArray());
        }
        /// <summary>
        /// 将XML反序列化成对象
        /// </summary>
        /// <param name="s"></param>
        /// <param name="t"></param>
        /// <returns></returns>
        public static object XMLToObject(string s, Type t)
        {
            XmlSerializer mySerializer = new XmlSerializer(t);
            StreamReader mem2 = new StreamReader(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(s)), System.Text.Encoding.UTF8);
            return mySerializer.Deserialize(mem2);
        }

常用方法:

        public static string ObjectToXML<T>(T t)
        {
            return ObjectToXML<T>( t, Encoding.UTF8 );

        }


/// <summary>
        /// 将object对象序列化成XML
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static string ObjectToXML<T>( T t, Encoding encoding )
        {
            XmlSerializer ser = new XmlSerializer( t.GetType() );
            Encoding utf8EncodingWithNoByteOrderMark = new UTF8Encoding(false);
            using ( MemoryStream mem = new MemoryStream() )
            {
                using (XmlTextWriter writer = new XmlTextWriter(mem, utf8EncodingWithNoByteOrderMark))
                {
                    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                    ns.Add( "", "" );
                    ser.Serialize( writer, t, ns );
                    return encoding.GetString( mem.ToArray() );
                }
            }
        }


反序列化:
        public static T XMLToObject<T>(string source)
        {
            return XMLToObject<T>( source, Encoding.UTF8 );
        }


public static T XMLToObject<T>( string source, Encoding encoding )
        {
            XmlSerializer mySerializer = new XmlSerializer( typeof( T ) );
            using ( MemoryStream stream = new MemoryStream( encoding.GetBytes( source ) ) )
            {
                return ( T )mySerializer.Deserialize( stream );
            }
        }


二进制

/// <summary>
        /// 二进制方式序列化对象
        /// </summary>
        /// <param name="testUser"></param>
        public static string Serialize<T>(T obj)
        {
            MemoryStream ms = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);

            return ms.ToString();
        }

        /// <summary>
        /// 二进制方式反序列化对象
        /// </summary>
        /// <returns></returns>
        public static T DeSerialize<T>(string str) where T:class
        {
            MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str));
            BinaryFormatter formatter = new BinaryFormatter();
            T t = formatter.Deserialize(ms) as T;
            return t;
        }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值