构建TreeWalker时,为什么currentNode指向根,即使它可能没有通过过滤条件?
我希望它为null,直到我调用nextNode,以便我可以看到root是否传递了传递给它的过滤条件。
我想这是它的设计方式,我只是不太明白原因。它不适合我查找具有特定属性集的所有元素的用例,包括根。如果我找到根的父母,我包括我不想要的兄弟姐妹。
答案 0 :(得分:1)
current node不代表最后一次方法调用的结果,但它表示walk的当前状态,即从中进行下一步的节点。它绝不能为null,实际上可能是一个不能通过过滤器的节点 - 它可以任意设置(手动,不仅仅是步骤方法)。
只有所有方法调用的返回值都是经过筛选的节点,那些可以是null
。
它不适合我查找具有特定属性集的所有元素的用例,包括根。
如果匹配过滤器,则使用parentNode
method最终会转到根节点,否则会转到null
。
答案 1 :(得分:0)
currentNode
指向根,因为它可以递归遍历文档子树,将每个childNode
称为其自己的树的根。它不一定指向文档的根,只是指向创建树的root
节点。见tree traversal