.net 定義泛型方法解析XML數據賦值給相應對象

參考地址:https://www.cnblogs.com/Shang0109/archive/2013/07/09/3180026.html
在這上面作了個改進,把第一個方法改爲了泛型方法
Codehtml

private static List<T> galigaygay<T>(string xmlStrSource, string xmlNodeName)
        {
            List<T> dataList = new List<T>();
            try
            {
                Type t = typeof(T);
                object obj = Activator.CreateInstance(t, null);//建立指定類型實例
                PropertyInfo[] fields = obj.GetType().GetProperties();//獲取指定對象的全部公共屬性
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(xmlStrSource);//加載xml
                XmlNodeList xlist = xml.GetElementsByTagName(xmlNodeName);//獲取item節點列表
                foreach (XmlNode xn in xlist)//遍歷全部item節點
                {
                    object u = Activator.CreateInstance(t, null);//建立指定類型實例
                    foreach (PropertyInfo p in fields)
                    {
                        for (int i = 0; i < xn.ChildNodes.Count;)
                        {
                            if (xn.ChildNodes[i].Attributes["name"].Value.Equals(p.Name,StringComparison.OrdinalIgnoreCase))
                            {
                                p.SetValue(u, xn.ChildNodes[i].Attributes["value"].Value, null);//給建立的實例屬性賦值
                            }
                            i++;
                        }
                    }
                    dataList.Add((T)u);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dataList;
        }

XMLasp.net

<?xml version="1.0" encoding="UTF-8"?>
                 <list>
                      <R>
                          <item name = "XM" name_cn = "姓名"  value = "1"/>
                          <item name = "XB" name_cn = "性別"  value = "ee"/>
                      </R>
                      <R>
                          <item name = "XM" name_cn = "姓名"  value = "2"/>
                          <item name = "XB" name_cn = "性別"  value = "rr"/>
                      </R>
                 </list>

調用.net

List<實體類> list=galigaygay<實體類>(xmlstr,"R")
相關文章
相關標籤/搜索