/// <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));//返回所有符合条件的节点 }
/// <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));//返回所有符合条件的节点 }
/// <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);//如果有子节点则遍历子节点 } } }
/// <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); }
/// <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); }
/// <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); }
/// <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; }
/// <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);//如果有子节点则遍历子节点 } } }
/// <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);//返回所有符合条件的节点 }
/// <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; }
/// <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);//返回所有符合条件的节点 }
/// <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; }