为什么TreeWalker currentNode默认为根节点

Why does TreeWalker currentNode default to root node?

本文关键字:根节点 默认 currentNode TreeWalker 为什么      更新时间:2024-05-02

在构造TreeWalker时,为什么currentNode指向根,即使它可能不通过筛选条件?

我本来希望它为null,直到我调用nextNode,这样我就可以看到根是否正在传递传递给它的筛选条件

我想这是它的设计方式,我只是不太明白原因。它不适合我查找具有特定属性集的所有元素(包括根)的用例。如果我转到根的父级,我就包括了我不想要的兄弟姐妹。

当前节点不表示上一次方法调用的结果,但它表示walk的当前状态,即执行下一步的节点。它决不能为null,实际上可能是一个不会通过过滤器的节点——它可以任意设置(手动设置,而不仅仅是通过step方法)。

只有所有方法调用的返回值才会被过滤节点,并且这些返回值可以是null

它不适合我查找具有特定属性集的所有元素(包括根)的用例。

如果parentNode方法与筛选器匹配,那么它最终应该会将您带到根节点,否则使用null方法。

currentNode指向根,因为这样它就可以递归遍历文档子树,将每个childNode调用为自己树的根。它不一定指向文档的根,只指向创建树时使用的root节点。参见tree traversal