private void SelectDescendants(SeekableXPathNavigator contextNode, NodeSequence destSequence) { int num = 1; if (contextNode.MoveToFirstChild()) { while (num > 0) { if (this.MatchQName(contextNode)) { destSequence.Add(contextNode); } if (contextNode.MoveToFirstChild()) { num++; } else if (!contextNode.MoveToNext()) { while (num > 0) { contextNode.MoveToParent(); num--; if (contextNode.MoveToNext()) { break; } } } } } }
void SelectDescendants(SeekableXPathNavigator contextNode, NodeSequence destSequence) { int level = 1; if (!contextNode.MoveToFirstChild()) { return; } while (level > 0) { // Don't need type check. All child nodes allowed. if (this.MatchQName(contextNode)) { destSequence.Add(contextNode); } if (contextNode.MoveToFirstChild()) { ++level; } else if (contextNode.MoveToNext()) { } else { while (level > 0) { contextNode.MoveToParent(); --level; if (contextNode.MoveToNext()) { break; } } } } }