XmlHelher帮助类-----xml

来源:互联网 发布:深圳市软件企业 退税 编辑:程序博客网 时间:2024/06/05 07:25
public class XmlHelper    {        /// <summary>        ///  实体类序列化成xml        /// </summary>        /// <param name="enitities">The enitities.</param>        /// <param name="headtag">The headtag.</param>        /// <returns></returns>        public static string ToXml<T>(List<T> enitities, string root = "Score")        {            StringBuilder sb = new StringBuilder();            PropertyInfo[] propinfos = null;            foreach (T obj in enitities)            {                //初始化propertyinfo                if (propinfos == null)                {                    Type bjtype = obj.GetType();                    propinfos = bjtype.GetProperties();                }                sb.AppendLine("<" + root + ">");                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("</" + root + ">");            }            return sb.ToString();        }        /// <summary>        ///  使用XML初始化实体类容器        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="typename">The typename.</param>        /// <param name="xml">The XML.</param>        /// <param name="headtag">The headtag.</param>        /// <returns></returns>        public static List<T> XmlToObjList<T>(string xml, string root = "Score")            where T : new()        {            List<T> list = new List<T>();            XmlDocument doc = new XmlDocument();            PropertyInfo[] propinfos = null;            doc.LoadXml(xml);            XmlNodeList nodelist = doc.SelectNodes(root);            foreach (XmlNode node in nodelist)            {                T entity = new T();                //初始化propertyinfo                if (propinfos == null)                {                    Type bjtype = entity.GetType();                    propinfos = bjtype.GetProperties();                }                //填充entity类的属性                foreach (PropertyInfo propinfo in propinfos)                {                    XmlNode cnode = node.SelectSingleNode(propinfo.Name);                    if (cnode == null) continue;                    string v = cnode.InnerText;                    if (v != null)                        propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);                }                list.Add(entity);            }            return list;        }        /// <summary>        ///  使用XML初始化实体类容器        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="typename">The typename.</param>        /// <param name="xml">The XML.</param>        /// <param name="headtag">The headtag.</param>        /// <returns></returns>        public static List<T> XmlToObj<T>(string xml, string root = "Item")            where T : new()        {            List<T> list = new List<T>();            XmlDocument doc = new XmlDocument();            PropertyInfo[] propinfos = null;            doc.LoadXml(xml);            XmlNodeList nodelist = doc.GetElementsByTagName(root);            foreach (XmlNode node in nodelist)            {                T entity = new T();                //初始化propertyinfo                if (propinfos == null)                {                    Type bjtype = entity.GetType();                    propinfos = bjtype.GetProperties();                }                //填充entity类的属性                foreach (PropertyInfo propinfo in propinfos)                {                    foreach (XmlNode sNode in node.ChildNodes)                    {                        if (sNode == null) continue;                        if (sNode.Name == propinfo.Name)                        {                            string v = sNode.InnerText;                            if (v != null)                            {                                propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);                                break;                            }                        }                    }                    //XmlNode cnode = node.(propinfo.Name);                    //if (cnode == null) continue;                    //string v = cnode.InnerText;                    //if (v != null)                    //    propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);                }                list.Add(entity);            }            return list;        }    }

原创粉丝点击