zoukankan      html  css  js  c++  java
  • xml读取类

    public class XmlHelper<T> where T :class
        {
            XmlReader reader = null;
            public XmlHelper(string filePath)
            {
                if (File.Exists(filePath))
                {
                    reader = XmlReader.Create(filePath);
                }
            }
    
            public List<T> ReadXmlToObject()
            {
                Type type = typeof(T);
                PropertyInfo[] fields = type.GetProperties();
                List<T> list = new List<T>();
                if (reader != null)
                {
                     XElement root = XElement.Load(reader);
                    reader.Close();
                    //XElement temp = root.Element(type.Name);
                    //var xes = temp.Elements(type.Name);
                    var xes = from temp in root.Elements() where temp.Name==type.Name select temp;
                    int i = xes.Count<XElement>();
                    List<XElement> list2 = null;
                    if (i == 0)
                    {
                        xes = from temp in root.Elements() select temp;
                         list2 = xes.ToList();
                        xes = from temp in root.Element(list2[0].Name).Elements() where temp.Name==type.Name select temp;
                    }
                    i = xes.Count<XElement>();
                    if (i == 0)
                    {
                        xes = from temp in list2[0].Elements() select temp;
                        list2 = xes.ToList();
                        xes = from temp in list2[1].Elements() where temp.Name == type.Name select temp;
                    }
                    i = xes.Count<XElement>();
                    T t = default(T);
                    foreach(var e in xes)
                    {
                        t = (T)Activator.CreateInstance(type);
                        foreach (PropertyInfo info in fields)
                        {
                            var ta = e.Element(info.Name);
                            if (ta != null)
                                info.SetValue(t,ta.Value,null);
                        }
                        list.Add(t);
                    }
                }
    
                return list;
            }
        }
  • 相关阅读:
    Discuz安装(centos+宝塔)
    宝塔面板安装
    Java中设置classpath、path、JAVA_HOME的作用
    【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别
    提取Chrome插件为crx文件
    Python 01
    Java 01
    HTML5学习之FileReader接口
    formidable上传图片
    Mac系统下brew安装指定版本的nodejs小笔记
  • 原文地址:https://www.cnblogs.com/zjmsky/p/4815048.html
Copyright © 2011-2022 走看看