public interface TreeWalker
TreeWalker
对象用于使用其 whatToShow
标志和过滤器(如果有)定义的文档视图导航文档树或子树。任何使用 TreeWalker
执行导航的函数将自动支持由 TreeWalker
定义的任何视图。
从子树的逻辑视图中省略节点可能导致结构与完整的未过滤文档中相同子树的结构大不相同。在 TreeWalker
视图中作为兄弟节点的节点可能是原始视图中不同、相距很远的节点的子节点。例如,考虑一个跳过除文本节点和文档根节点之外所有节点的 NodeFilter
。在结果中的逻辑视图中,所有文本节点将作为根节点的直接子节点并列出,无论原始文档的结构有多深嵌套。
另请参阅 文档对象模型(DOM)级别2遍历和范围规范。
- 自从:
- 9, DOM Level 2
-
Method Summary
Modifier and TypeMethodDescription将TreeWalker
移动到当前节点的第一个可见子节点,并返回新节点。TreeWalker
当前定位的节点。boolean
此标志的值确定实体引用节点的子节点是否对TreeWalker
可见。用于筛选节点的过滤器。getRoot()
TreeWalker
的root
节点,在创建时指定。int
此属性确定通过TreeWalker
显示哪些节点类型。将TreeWalker
移动到当前节点的最后一个可见子节点,并返回新节点。nextNode()
将TreeWalker
移动到相对于当前节点在文档顺序中的下一个可见节点,并返回新节点。将TreeWalker
移动到当前节点的下一个兄弟节点,并返回新节点。移动并返回当前节点的最近可见祖先节点。将TreeWalker
移动到相对于当前节点在文档顺序中的上一个可见节点,并返回新节点。将TreeWalker
移动到当前节点的上一个兄弟节点,并返回新节点。void
setCurrentNode
(Node currentNode) TreeWalker
当前定位的节点。
-
Method Details
-
getRoot
Node getRoot()TreeWalker
的root
节点,在创建时指定。 -
getWhatToShow
int getWhatToShow()此属性确定通过TreeWalker
显示哪些节点类型。可用的常量集在NodeFilter
接口中定义。不被whatToShow
接受的节点将被跳过,但其子节点仍可能被考虑。请注意,此跳过优先于过滤器(如果有)。 -
getFilter
NodeFilter getFilter()用于筛选节点的过滤器。 -
getExpandEntityReferences
boolean getExpandEntityReferences()此标志的值确定实体引用节点的子节点是否对TreeWalker
可见。如果为 false,则这些子节点及其后代将被拒绝。请注意,此拒绝优先于whatToShow
和过滤器(如果有)。
要生成一个展开实体引用并不公开实体引用节点本身的文档视图,请使用whatToShow
标志隐藏实体引用节点并在创建TreeWalker
时将expandEntityReferences
设置为 true。要生成具有实体引用节点但不展开实体的文档视图,请使用whatToShow
标志显示实体引用节点并将expandEntityReferences
设置为 false。 -
getCurrentNode
Node getCurrentNode()TreeWalker
当前定位的节点。
对 DOM 树的更改可能导致当前节点不再被TreeWalker
的关联过滤器接受。currentNode
也可以明确设置为任何节点,无论它是否在由root
节点指定的子树内或是否被过滤器和whatToShow
标志接受。即使它不是当前视图的一部分,也会相对于currentNode
进行进一步遍历,通过在请求的方向应用过滤器;如果无法进行遍历,则不会更改currentNode
。 -
setCurrentNode
TreeWalker
当前定位的节点。
对 DOM 树的更改可能导致当前节点不再被TreeWalker
的关联过滤器接受。currentNode
也可以明确设置为任何节点,无论它是否在由root
节点指定的子树内或是否被过滤器和whatToShow
标志接受。即使它不是当前视图的一部分,也会相对于currentNode
进行进一步遍历,通过在请求的方向应用过滤器;如果无法进行遍历,则不会更改currentNode
。- 抛出:
-
DOMException
- NOT_SUPPORTED_ERR: 如果尝试将currentNode
设置为null
。
-
parentNode
Node parentNode()移动并返回当前节点的最近可见祖先节点。如果搜索parentNode
试图从TreeWalker
的root
节点向上移动,或者找不到可见祖先节点,则此方法保留当前位置并返回null
。- 返回:
-
新的父节点,如果当前节点在
TreeWalker
的逻辑视图中没有父节点,则返回null
。
-
firstChild
Node firstChild()将TreeWalker
移动到当前节点的第一个可见子节点,并返回新节点。如果当前节点没有可见子节点,则返回null
,并保留当前节点。- 返回:
-
新节点,如果当前节点在
TreeWalker
的逻辑视图中没有可见子节点,则返回null
。
-
lastChild
Node lastChild()将TreeWalker
移动到当前节点的最后一个可见子节点,并返回新节点。如果当前节点没有可见子节点,则返回null
,并保留当前节点。- 返回:
-
新节点,如果当前节点在
TreeWalker
的逻辑视图中没有子节点,则返回null
。
-
previousSibling
Node previousSibling()将TreeWalker
移动到当前节点的上一个兄弟节点,并返回新节点。如果当前节点没有可见的上一个兄弟节点,则返回null
,并保留当前节点。- 返回:
-
新节点,如果当前节点在
TreeWalker
的逻辑视图中没有上一个兄弟节点,则返回null
。
-
nextSibling
Node nextSibling()将TreeWalker
移动到当前节点的下一个兄弟节点,并返回新节点。如果当前节点没有可见的下一个兄弟节点,则返回null
,并保留当前节点。- 返回:
-
新节点,如果当前节点在
TreeWalker
的逻辑视图中没有下一个兄弟节点,则返回null
。
-
previousNode
Node previousNode()将TreeWalker
移动到当前节点相对于文档顺序中的上一个可见节点,并返回新节点。如果当前节点没有上一个节点,或者搜索previousNode
试图从TreeWalker
的root
节点向上移动,则返回null
,并保留当前节点。- 返回:
-
新节点,如果当前节点在
TreeWalker
的逻辑视图中没有上一个节点,则返回null
。
-
nextNode
Node nextNode()将TreeWalker
移动到当前节点相对于文档顺序中的下一个可见节点,并返回新节点。如果当前节点没有下一个节点,或者搜索下一个节点尝试从TreeWalker
的root
节点向上移动,则返回null
,并保留当前节点。- 返回:
-
新节点,如果当前节点在
TreeWalker
的逻辑视图中没有下一个节点,则返回null
。
-