xml与对象的相互转化

    public class XmlHelper

    {
        /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="type"></param>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static object Deserialize(Type type, string xml)
        {
            try
            {
                using (StringReader sr = new StringReader(xml))
                {
                    XmlSerializer xmldes = new XmlSerializer(type);
                    return xmldes.Deserialize(sr);
                }
            }
            catch (Exception e)
            {


                return null;
            }
        }
        public static object Deserialize(Type type, Stream stream)
        {
            XmlSerializer xmldes = new XmlSerializer(type);
            return xmldes.Deserialize(stream);
        }


        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="type">类型</param>
        /// <param name="obj">对象</param>
        /// <returns></returns>
        public static string Serializer(Type type, object obj)
        {
            MemoryStream Stream = new MemoryStream();
            XmlSerializer xml = new XmlSerializer(type);
            try
            {
                //序列化对象
                xml.Serialize(Stream, obj);
            }
            catch (InvalidOperationException)
            {
                throw;
            }
            Stream.Position = 0;
            StreamReader sr = new StreamReader(Stream);
            string str = sr.ReadToEnd();


            sr.Dispose();
            Stream.Dispose();


            return str;
        }
    }



调用方式:

public class CLASS1

{

    public object obj

    { get; set;}

}

序列化:

CLASS1 c1 = new CLASS1()

{

    obj = "Hello"

};

string strXml = XmlHelper.Serializer(typeof(CLASS1), c1);


反序列化:

c1 = XmlHelper.Deserialize(typeof(CLASS1), strXml) as CLASS1;


注意反序列化的时候要用序列化的xml前缀

比如你要反序列化一段xml字符串,请先创建其实体类时先序列化一次,取出前缀(还有它的关闭标签!!)然后再把自己要反序列化的字符串和前缀替换组合一下


string xmlhead = "<?xml version=\"1.0\"?>" +
                "<CLASS1 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
                "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">{0}</CLASS1>";

string strXml = string.Format(xmlHead, "你自己的strXml,记得去掉头部然后再组合");

: -)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值