zoukankan      html  css  js  c++  java
  • read xml test

    /// <summary>
        /// 读取Xml
        /// </summary>
        /// <typeparam name="T">对应解析XML文件对象</typeparam>
        public class XmlHelper<T> where T :class
        {
            #region  可以用的代码
    
            //XML文件路径
            private string filePath;
            List<XElement> xelList = new List<XElement>();
    
    
            public XmlHelper(string filePath)
            {
                this.filePath = filePath;
                
            }
            /// <summary>
            /// 文件路径
            /// </summary>
            public string FilePath
            {
                get { return this.filePath; }
                set { this.filePath = value; }
            }
            /// <summary>
            /// 读取XML文件到自定义对象
            /// </summary>
            /// <returns>List<></returns>
            public List<T> ReadXmlToObject()
            {
                xelList.Clear();
                XmlReader reader = GetXmlReader();
                
                Type type = typeof(T);
                PropertyInfo[] fields = type.GetProperties();
                List<T> list = new List<T>();
                if (reader != null)
                {
                    //载入XML文件获取根节点
                    XElement root = XElement.Load(reader);
                    reader.Close();
    
                    if (root.Name == type.Name)
                    {
                        xelList.Add(root);
                    }
                    QueryXelement(root, type.Name);
    
                    T t = default(T);
                    XElement temp = null;
                    //遍历符合条件的节点
                    foreach(var e in xelList)
                    {
                        //创建对象实例
                        t = (T)Activator.CreateInstance(type);
                        foreach (PropertyInfo info in fields)
                        {
                            temp = e.Element(info.Name);
                            if (temp != null)
                            {
                                info.SetValue(t, temp.Value, null);
                            }
                        }
                        list.Add(t);
                    }
                }
                return list;
            }
    
            private void QueryTest(XElement xele)
            {
                //var temp = from temp in xele.Elements() where temp.Name=="test" ;
            }
    
            /// <summary>
            /// 分析XML文档节点
            /// </summary>
            /// <param name="xele">要分析的节点</param>
            /// <param name="typeName">分析对象T的类型名称</param>
    
            private void QueryXelement(XElement xele, string typeName)
            {
                //返回节点集合
                var xeles = from temp in xele.Elements() select temp;
    
                //如果符合条件的集合为0,Return
                if (xeles.Count() == 0)
                {                
                    return;
                }
                else
                {
                    foreach(XElement el in xeles)
                    {
                        if (el.Name == typeName)
                        {
                            xelList.Add(el);
                        }
                        QueryXelement(el, typeName);
                    }
                }
            }
    
            /// <summary>
            /// 获取XmlReader
            /// </summary>
            /// <returns>XmlReader</returns>
            private XmlReader GetXmlReader()
            {
                XmlReader reader = null;
                if (File.Exists(filePath))
                {
                    reader = XmlReader.Create(filePath);
                }
                return reader;
            }
    }

  • 相关阅读:
    springMVC实现表单上传文件,MultipartResolver介绍及配置
    利用 java.util.Timer来写一个定时器
    集合泛型的不变性,而数组具有协变性,注意赋值容易导致的出错
    Python
    GenericServlet
    ServletRequest
    ServletConfig与ServletContext
    Servlet配置及生命周期
    使用jQuery实现Ajax
    XMLHttpRequest实现Ajax &数据格式JSON
  • 原文地址:https://www.cnblogs.com/zjmsky/p/4818157.html
Copyright © 2011-2022 走看看