-
public interface TreeWalker
TreeWalker
对象用于使用由其whatToShow
标志和过滤器(如果有)定义的文档视图导航文档树或子树。 使用TreeWalker
执行导航的任何功能都将自动支持由TreeWalker
定义的任何视图。从子树的逻辑视图中省略节点可以导致与完整的未过滤文档中的相同子树显着不同的结构。 作为
TreeWalker
视图中的兄弟节点的节点可以是原始视图中不同的,广泛分离的节点的子节点。 例如,考虑一个NodeFilter
,它跳过除Text节点和文档根节点之外的所有节点。 在结果的逻辑视图中,无论原始文档的结构有多深层嵌套,所有文本节点都将是兄弟节点并显示为根节点的直接子节点。另见Document Object Model (DOM) Level 2 Traversal and Range Specification 。
- 从以下版本开始:
- 9,DOM Level 2
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 Node
firstChild()
将TreeWalker
移动到当前节点的第一个可见子节点,并返回新节点。Node
getCurrentNode()
TreeWalker
当前所在的节点。boolean
getExpandEntityReferences()
此标志的值确定实体引用节点的子节点是否对TreeWalker
可见。NodeFilter
getFilter()
用于筛选节点的过滤器。Node
getRoot()
所述root
节点的TreeWalker
,它被创建时指定。int
getWhatToShow()
此属性确定通过TreeWalker
呈现的节点类型。Node
lastChild()
将TreeWalker
移动到当前节点的最后一个可见子节点,并返回新节点。Node
nextNode()
将TreeWalker
以相对于当前节点的文档顺序移动到下一个可见节点,并返回新节点。Node
nextSibling()
将TreeWalker
移动到当前节点的下一个兄弟节点,并返回新节点。Node
parentNode()
移动并返回当前节点的最近的可见祖先节点。Node
previousNode()
将TreeWalker
相对于当前节点按文档顺序移动到上一个可见节点,并返回新节点。Node
previousSibling()
将TreeWalker
移动到当前节点的上一个兄弟节点,并返回新节点。void
setCurrentNode(Node currentNode)
TreeWalker
当前所在的节点。
-
-
-
方法详细信息
-
getRoot
Node getRoot()
所述root
节点的TreeWalker
,它被创建时指定。
-
getWhatToShow
int getWhatToShow()
此属性确定通过TreeWalker
显示哪些节点类型。 可用的常量集在NodeFilter
接口中定义。 将不会跳过whatToShow
不接受的节点,但仍可考虑他们的孩子。 请注意,此跳过优先于过滤器(如果有)。
-
getFilter
NodeFilter getFilter()
用于筛选节点的过滤器。
-
getExpandEntityReferences
boolean getExpandEntityReferences()
此标志的值确定实体引用节点的子节点是否对TreeWalker
可见。 如果不对,这些孩子及其后代将被拒绝。 请注意,此拒绝优先于whatToShow
和过滤器(如果有)。
为了产生具有扩展实体引用,并没有露出实体引用节点自身的文档视图,使用whatToShow
标志隐藏实体引用节点并设置expandEntityReferences
创建时为trueTreeWalker
。 要生成具有实体引用节点但没有实体扩展的文档视图,请使用whatToShow
标志显示实体引用节点并将expandEntityReferences
设置为false。
-
getCurrentNode
Node getCurrentNode()
TreeWalker
当前所在的节点。
对DOM树的更改可能导致TreeWalker
的关联过滤器不再接受当前节点。currentNode
也可以显式设置为任何节点,无论它是否在root
节点指定的子树内,或者是否被过滤器和whatToShow
标志接受。 通过在请求的方向上应用滤波器,即使它不是当前视图的一部分,也会发生相对于currentNode
进一步遍历; 如果无法进行遍历,则不会更改currentNode
。
-
setCurrentNode
void setCurrentNode(Node currentNode) throws DOMException
TreeWalker
当前所在的节点。
对DOM树的更改可能导致当前节点不再被TreeWalker
的关联过滤器接受。currentNode
也可以显式设置为任何节点,无论它是否在root
节点指定的子树内,或者是否被过滤器和whatToShow
标志接受。 通过在请求的方向上应用过滤器,即使它不是当前视图的一部分,也会发生相对于currentNode
进一步遍历; 如果无法进行遍历,则不会更改currentNode
。- 异常
-
DOMException
- NOT_SUPPORTED_ERR:如果尝试将currentNode
设置为currentNode
,则null
。
-
parentNode
Node parentNode()
移动并返回当前节点的最近的可见祖先节点。 如果搜索parentNode
尝试从TreeWalker
的root
节点向上root
,或者如果找不到可见的祖先节点,则此方法将保留当前位置并返回null
。- 结果
- 新的父节点,或
null
如果当前节点具有在没有父TreeWalker
的逻辑视图。
-
firstChild
Node firstChild()
将TreeWalker
移动到当前节点的第一个可见子节点,并返回新节点。 如果当前节点没有可见子节点,则返回null
,并保留当前节点。- 结果
- 新的节点,或
null
如果当前节点在没有可见的孩子TreeWalker
的逻辑视图。
-
lastChild
Node lastChild()
将TreeWalker
移动到当前节点的最后一个可见子节点,并返回新节点。 如果当前节点没有可见子节点,则返回null
,并保留当前节点。- 结果
- 新的节点,或
null
如果当前节点在没有孩子TreeWalker
的逻辑视图。
-
previousSibling
Node previousSibling()
将TreeWalker
移动到当前节点的上一个兄弟节点,并返回新节点。 如果当前节点没有可见的上一个兄弟节点,则返回null
,并保留当前节点。- 结果
- 新节点,如果当前节点没有先前的兄弟节点,
null
。 在TreeWalker
的逻辑观点。
-
nextSibling
Node nextSibling()
将TreeWalker
移动到当前节点的下一个兄弟节点,并返回新节点。 如果当前节点没有可见的下一个兄弟节点,则返回null
,并保留当前节点。- 结果
- 新节点,如果当前节点没有下一个兄弟节点,
null
。 在TreeWalker
的逻辑视图中。
-
previousNode
Node previousNode()
将TreeWalker
以文档顺序相对于当前节点移动到上一个可见节点,并返回新节点。 如果当前节点没有上一个节点,或者搜索previousNode
尝试从TreeWalker
的root
节点向上root
,则返回null
,并保留当前节点。- 结果
- 新节点,或
null
如果当前节点具有在没有先前的节点TreeWalker
的逻辑视图。
-
nextNode
Node nextNode()
将TreeWalker
以相对于当前节点的文档顺序移动到下一个可见节点,并返回新节点。 如果当前节点没有下一个节点,或者搜索nextNode尝试从TreeWalker
的root
节点向上步,则返回null
,并保留当前节点。- 结果
- 新节点,或
null
如果当前节点具有在没有下一个节点TreeWalker
的逻辑视图。
-
-