zoukankan      html  css  js  c++  java
  • 实体转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;
    
            }
  • 相关阅读:
    学习 Message(12): 整合鼠标 Down 消息
    合并两个 Wav 文件流的函数 回复 "刘文强" 的问题
    “博客无双”第一期拍卖活动获奖名单公告
    [获奖公告]“博客无双”12月27日第一期获奖名单
    “博客无双”活动拍卖时间调整公告
    致歉
    祝大家新年快乐
    博客园电子期刊2010年12月刊发布啦
    “博客无双”拍卖活动将于14:00开始
    2011年4月微软最有价值专家(MVP)申请截止时间:2011年1月13日
  • 原文地址:https://www.cnblogs.com/randyzhuwei/p/4058721.html
Copyright © 2011-2022 走看看