參考地址: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")