///// <summary> ///// Steps up the tree from the closest parent to the root node returning each node that matches ///// </summary> //static public IEnumerable<HtmlNode> Parents( this XmlNode root, string cssSelector ) { // return root.Parents().Where( new CssExpression( cssSelector ).IsMatch ); //} /// <summary> /// Searches up ancestor tree, starting with self, for first node that matches /// </summary> static public XmlNode Closest(this XmlNode root, string cssSelector) { var cssExpression = new CssExpression(cssSelector); XmlNode cur = root; while (cur != null) { if (cssExpression.IsMatch(cur)) { return(cur); } cur = cur.ParentNode; } return(null); }
/// <summary> /// Searches up ancestor tree, starting with self, for first node that matches /// </summary> public HtmlNode Closest(string cssSelector) { var cssExpression = new CssExpression(cssSelector); HtmlNode cur = this; while (cur != null) { if (cssExpression.IsMatch(cur)) { return(cur); } cur = cur.ParentNode; } return(null); }