实体类与xml互相转换通用

来源:互联网 发布:经济数据公布网站 编辑:程序博客网 时间:2024/05/17 01:32
// <summary>        ///  实体类序列化成xml        /// </summary>        /// <param name="enitities">实体.</param>        /// <param name="headtag">节点名称</param>        /// <returns></returns>        public static string ObjListToXml<T>(List<T> enitities, string headtag)        {            StringBuilder sb = new StringBuilder();            PropertyInfo[] propinfos = null;            sb.AppendLine("<?xml version=/"1.0/" encoding=/"utf-8/"?>");            sb.AppendLine("<"+headtag+">");            foreach (T obj in enitities)            {                //初始化propertyinfo                if (propinfos == null)                {                    Type objtype = obj.GetType();                    propinfos = objtype.GetProperties();                }                sb.AppendLine("<item>");                foreach (PropertyInfo propinfo in propinfos)                {                    sb.Append("<");                    sb.Append(propinfo.Name);                    sb.Append(">");                    sb.Append(propinfo.GetValue(obj, null));                    sb.Append("</");                    sb.Append(propinfo.Name);                    sb.AppendLine(">");                }                sb.AppendLine("</item>");            }            sb.AppendLine("</" + headtag + ">");            return sb.ToString();        }xml转行为实体类 /// <summary>        /// xml文件转化为实体类列表        /// </summary>        /// <typeparam name="T">实体名称</typeparam>        /// <param name="xml">您的xml文件</param>        /// <param name="headtag">xml头文件</param>        /// <returns>实体列表</returns>        public static List<T> XmlToObjList<T>(string xml, string headtag)            where T : new()        {            List<T> list = new List<T>();            XmlDocument doc = new XmlDocument();            PropertyInfo[] propinfos = null;            doc.LoadXml(xml);            //XmlNodeList nodelist = doc.SelectNodes(headtag);            XmlNodeList nodelist = doc.GetElementsByTagName(headtag);            foreach (XmlNode node in nodelist)            {                T entity = new T();                //初始化propertyinfo                if (propinfos == null)                {                    Type objtype = entity.GetType();                    propinfos = objtype.GetProperties();                }                //填充entity类的属性                foreach (PropertyInfo propinfo in propinfos)                {                    //实体类字段首字母变成小写的                    string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1, propinfo.Name.Length - 1);                    XmlNode cnode = node.SelectSingleNode(name);                    string v = cnode.InnerText;                    if (v != null)                        propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);                }                list.Add(entity);            }            return list;        }


原创粉丝点击