コード例 #1
0
        /// <summary>
        /// 通过节点类型获取所有节点集合
        /// </summary>
        /// <param name="xnType">节点类型</param>
        /// <returns></returns>
        public List <XmlNode> GetNodeListByNodeType(XmlNodeType xnType)
        {
            //新建委托
            delegateCheckNode delcn = new delegateCheckNode(delegate(XmlNode xn)
            {
                return(xn.NodeType == xnType);
            });

            return(GetNodeListByDelegate(delcn));//返回所有符合条件的节点
        }
コード例 #2
0
        /// <summary>
        /// 获取所有属性符合条件的节点集合
        /// </summary>
        /// <param name="AttributeName">属性名</param>
        /// <param name="AttributeValue">属性值</param>
        /// <returns></returns>
        public List <XmlNode> GetNodeListByAttribute(string AttributeName, string AttributeValue)
        {
            if (string.IsNullOrEmpty(AttributeName))
            {
                throw new Exception("节点的属性名不可为空!");
            }

            //新建委托
            delegateCheckNode delcn = new delegateCheckNode(delegate(XmlNode xn)
            {
                return(xn.Attributes != null && xn.Attributes[AttributeName] != null && xn.Attributes[AttributeName].Value == AttributeValue);
            });

            return(GetNodeListByDelegate(delcn));//返回所有符合条件的节点
        }
コード例 #3
0
        /// <summary>
        /// 遍历所有节点
        /// </summary>
        /// <param name="xnList"></param>
        /// <param name="delcn"></param>
        protected void CheckAllNode(List <XmlNode> xnList, delegateCheckNode delcn, XmlNode xn)
        {
            //递归
            if (xn.HasChildNodes)
            {
                foreach (XmlNode cxn in xn.ChildNodes)
                {
                    if (delcn != null && delcn(cxn)) //委托不为空且条件符合
                    {
                        xnList.Add(cxn);
                    }

                    CheckAllNode(xnList, delcn, cxn);//如果有子节点则遍历子节点
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// 查找所有符合条件的节点
        /// </summary>
        /// <param name="delcn">条件委托</param>
        /// <returns></returns>
        public List <XmlNode> GetNodeListByDelegate(delegateCheckNode delcn)
        {
            List <XmlNode> xnList = new List <XmlNode>();

            //循环所有顶级节点
            foreach (XmlNode xn in XmlDoc.ChildNodes)
            {
                if (delcn != null && delcn(xn)) //委托不为空且条件符合
                {
                    xnList.Add(xn);
                }
                if (xn.HasChildNodes)
                {
                    CheckAllNode(xnList, delcn, xn);//如果有子节点则遍历子节点
                }
            }

            return(xnList);
        }
コード例 #5
0
        /// <summary>
        /// 通过委托获取单个节点
        /// </summary>
        /// <param name="delcn">获取节点的委托</param>
        /// <returns></returns>
        public XmlNode GetNodeByDelegate(delegateCheckNode delcn)
        {
            //循环所有顶级节点
            foreach (XmlNode xn in XmlDoc.ChildNodes)
            {
                if (delcn != null && delcn(xn)) //委托不为空且条件符合
                {
                    return(xn);
                }

                if (xn.HasChildNodes)
                {
                    XmlNode cxn = GetXmlNodeByDelegate(delcn, xn);//如果有子节点则遍历子节点
                    if (cxn != null)
                    {
                        return(cxn);
                    }
                }
            }
            return(null);
        }
コード例 #6
0
        /// <summary>
        /// 获取节点通过委托
        /// </summary>
        /// <param name="delcn"></param>
        /// <param name="xn"></param>
        /// <returns></returns>
        protected XmlNode GetXmlNodeByDelegate(delegateCheckNode delcn, XmlNode xn)
        {
            if (delcn != null && delcn(xn)) //委托不为空且条件符合
            {
                return(xn);
            }

            //递归
            if (xn.HasChildNodes)
            {
                foreach (XmlNode cxn in xn.ChildNodes)
                {
                    XmlNode ccxn = GetXmlNodeByDelegate(delcn, cxn);//如果有子节点则遍历子节点
                    if (ccxn != null)
                    {
                        return(ccxn);
                    }
                }
            }

            return(null);
        }
コード例 #7
0
ファイル: XMLOperator.cs プロジェクト: gofixiao/12306
        /// <summary>
        /// 获取节点通过委托
        /// </summary>
        /// <param name="delcn"></param>
        /// <param name="xn"></param>
        /// <returns></returns>
        protected XmlNode GetXmlNodeByDelegate(delegateCheckNode delcn, XmlNode xn)
        {
            if (delcn != null && delcn(xn)) //委托不为空且条件符合
                return xn;

            //递归
            if (xn.HasChildNodes)
            {
                foreach (XmlNode cxn in xn.ChildNodes)
                {
                    XmlNode ccxn = GetXmlNodeByDelegate(delcn, cxn);//如果有子节点则遍历子节点
                    if (ccxn != null) return ccxn;
                }
            }

            return null;
        }
コード例 #8
0
ファイル: XMLOperator.cs プロジェクト: gofixiao/12306
        /// <summary>
        /// 遍历所有节点
        /// </summary>
        /// <param name="xnList"></param>
        /// <param name="delcn"></param>
        protected void CheckAllNode(List<XmlNode> xnList, delegateCheckNode delcn, XmlNode xn)
        {
            //递归
            if (xn.HasChildNodes)
            {
                foreach (XmlNode cxn in xn.ChildNodes)
                {
                    if (delcn != null && delcn(cxn)) //委托不为空且条件符合
                        xnList.Add(cxn);

                    CheckAllNode(xnList, delcn, cxn);//如果有子节点则遍历子节点
                }
            }
        }
コード例 #9
0
ファイル: XMLOperator.cs プロジェクト: gofixiao/12306
        /// <summary>
        /// 通过节点类型获取所有节点集合
        /// </summary>
        /// <param name="xnType">节点类型</param>
        /// <returns></returns>
        public List<XmlNode> GetNodeListByNodeType(XmlNodeType xnType)
        {
            //新建委托
            delegateCheckNode delcn = new delegateCheckNode(delegate(XmlNode xn)
            {
                return xn.NodeType == xnType;
            });

            return GetNodeListByDelegate(delcn);//返回所有符合条件的节点
        }
コード例 #10
0
ファイル: XMLOperator.cs プロジェクト: gofixiao/12306
        /// <summary>
        /// 查找所有符合条件的节点
        /// </summary>
        /// <param name="delcn">条件委托</param>
        /// <returns></returns>
        public List<XmlNode> GetNodeListByDelegate(delegateCheckNode delcn)
        {
            List<XmlNode> xnList = new List<XmlNode>();

            //循环所有顶级节点
            foreach (XmlNode xn in XmlDoc.ChildNodes)
            {
                if (delcn != null && delcn(xn)) //委托不为空且条件符合
                    xnList.Add(xn);
                if (xn.HasChildNodes)
                {
                    CheckAllNode(xnList, delcn, xn);//如果有子节点则遍历子节点
                }
            }

            return xnList;
        }
コード例 #11
0
ファイル: XMLOperator.cs プロジェクト: gofixiao/12306
        /// <summary>
        /// 获取所有属性符合条件的节点集合
        /// </summary>
        /// <param name="AttributeName">属性名</param>
        /// <param name="AttributeValue">属性值</param>
        /// <returns></returns>
        public List<XmlNode> GetNodeListByAttribute(string AttributeName, string AttributeValue)
        {
            if (string.IsNullOrEmpty(AttributeName)) throw new Exception("节点的属性名不可为空!");

            //新建委托
            delegateCheckNode delcn = new delegateCheckNode(delegate(XmlNode xn)
            {
                return (xn.Attributes != null && xn.Attributes[AttributeName] != null && xn.Attributes[AttributeName].Value == AttributeValue);
            });

            return GetNodeListByDelegate(delcn);//返回所有符合条件的节点
        }
コード例 #12
0
ファイル: XMLOperator.cs プロジェクト: gofixiao/12306
        /// <summary>
        /// 通过委托获取单个节点
        /// </summary>
        /// <param name="delcn">获取节点的委托</param>
        /// <returns></returns>
        public XmlNode GetNodeByDelegate(delegateCheckNode delcn)
        {
            //循环所有顶级节点
            foreach (XmlNode xn in XmlDoc.ChildNodes)
            {
                if (delcn != null && delcn(xn)) //委托不为空且条件符合
                    return xn;

                if (xn.HasChildNodes)
                {
                    XmlNode cxn = GetXmlNodeByDelegate(delcn, xn);//如果有子节点则遍历子节点
                    if (cxn != null) return cxn;
                }
            }
            return null;
        }