实体转XML XML转实体

  // <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();
            System.Reflection.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 (System.Reflection.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();
        }

        /// <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>();
            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
            System.Reflection.PropertyInfo[] propinfos = null;
            doc.LoadXml(xml);
            System.Xml.XmlNodeList nodelist = doc.GetElementsByTagName(headtag);
            foreach (System.Xml.XmlNode node in nodelist)
            {
                T entity = new T();
                //初始化propertyinfo  
                if (propinfos == null)
                {
                    Type objtype = entity.GetType();
                    propinfos = objtype.GetProperties();
                }
                //填充entity类的属性  
                foreach (System.Reflection.PropertyInfo propinfo in propinfos)
                {
                    //实体类字段首字母变成小写的  
                    string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1, propinfo.Name.Length - 1);
                    System.Xml.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;

        }

 

posted @ 2014-10-29 10:04  zhuweirandy  阅读(424)  评论(0编辑  收藏  举报