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;
        }
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐