C#通过XmlSerializer把xml字符串序列化

本文介绍了三种不同的XML序列化方法:序列化列表类型的XML字符串、序列化简单XML字符串及使用XPath表达式进行序列化。重点讲解了如何通过.NET Framework中的XmlSerializer类实现这些功能,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.序列化列表类型的xml字符串

        /// <summary>
        /// 解析XML   多次创建XmlSerializer对象,电脑内存会快速增大存在性能问题
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="strXML">xml内容</param>
        /// <param name="rootName">根目录</param>
        /// <returns></returns>
        public static List<T> XmlDESerializerText<T>(string strXML, string rootName) where T : class
        {
            try
            {
                using (StringReader sr = new StringReader(strXML))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(List<T>), new XmlRootAttribute(rootName));
                    return serializer.Deserialize(sr) as List<T>;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }

2.序列化简单的xml字符串

/// <summary>
        /// 解析XML 多次创建XmlSerializer对象,电脑内存会快速增大存在性能问题
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="strXML">xml内容</param>
        /// <returns></returns>
        public static T XmlDESerializer<T>(string strXML) where T : class
        {
            try
            {
                using (StringReader sr = new StringReader(strXML))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
                    return serializer.Deserialize(sr) as T;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }

3.序列化列表类型的xml字符串

/// <summary>
        /// 解析XML 
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="strXML">xml内容</param>
        /// <param name="xpath">XPath 表达式</param>
        /// <returns></returns>
public static List<T> DESerializer<T>(string xml,string xpath)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);
            List<T> ls = new List<T>();
            var XmlObj = doc.SelectNodes(xpath);
            foreach (XmlNode item in XmlObj)
            {
                var statusbox = Activator.CreateInstance(typeof(T),null);
                var p = typeof(T).GetProperties();
                foreach (var i in p)
                {
                    var obj = item.SelectSingleNode(i.Name);
                    if (obj != null)
                    {
                        i.SetValue(statusbox, obj.InnerText, null);
                    }
                }
                ls.Add((T)statusbox);
            }
            return ls;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值