-
public interface TreeWalker
TreeWalker
对象用于使用由其whatToShow
标志定义的文档的视图和过滤器(如果有的话)导航文档树或子树。 使用TreeWalker
执行导航的任何功能将自动支持由TreeWalker
定义的任何视图。从子树的逻辑视图中省略节点可能导致与完整的未过滤文档中的相同子树实质上不同的结构。
TreeWalker
视图中的兄弟姐妹的节点可能是原始视图中不同的,广泛分离的节点的子节点。 例如,考虑NodeFilter
跳过除Text节点和文档的根节点之外的所有节点。 在结果的逻辑视图中,所有文本节点将是兄弟节点,并且作为根节点的直接子节点显示,无论如何深入地嵌套原始文档的结构。另见Document Object Model (DOM) Level 2 Traversal and Range Specification 。
- 从以下版本开始:
- 9,DOM Level 2
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 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
不接受的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
节点向上移动,或者如果找不到可见的祖先节点,则该方法保留当前位置并返回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
节点向上移动,则返回null
,并保留当前节点。- 结果
-
新节点,或
null
如果当前节点在TreeWalker
的逻辑视图中没有先前的节点。
-
nextNode
Node nextNode()
将TreeWalker
以相对于当前节点的文档顺序移动到下一个可见节点,并返回新节点。 如果当前节点没有下一个节点,或者如果对nextNode的搜索尝试从TreeWalker
的root
节点向上移动,则返回null
,并保留当前节点。- 结果
-
新节点,或
null
如果当前节点在TreeWalker
的逻辑视图中没有下一个节点。
-
-