TreeWalker - 表示文档子树的节点以及其中的位置

TreeWalker 对象表示文档子树的节点以及其中的位置。

可以使用 Document.createTreeWalker() 方法创建 TreeWalker

属性

此接口不继承任何属性。

TreeWalker.root 只读

返回一个 Node,它表示创建 TreeWalker 时指定的根节点。

TreeWalker.whatToShow 只读

返回一个 unsigned long,它是由常量组成的位掩码,该常量描述了必须显示的 Node 类型。不匹配的节点将被跳过,但是如果匹配,则可包括其子节点。可能的值为:

NodeFilter.SHOW_ALL

值为 -1(这是 unsigned long 的最大值),表示显示所有节点。

NodeFilter.SHOW_ATTRIBUTE

值为 2,显示属性 Attr 节点。仅当创建以 Attr 节点为根的 TreeWalker 时,这才有意义。在这种情况下,这意味着属性节点将出现在迭代或遍历的第一个位置。由于属性决不是其他节点的子级,因此在文档树上遍历时它们不会出现。

NodeFilter.SHOW_CDATA_SECTION

值为 8,显示 CDATASection 节点。

NodeFilter.SHOW_COMMENT

值为 128,显示 Comment 节点。

NodeFilter.SHOW_DOCUMENT

值为 256,显示 Document 节点。

NodeFilter.SHOW_DOCUMENT_FRAGMENT

值为 1024,显示 DocumentFragment 节点。

NodeFilter.SHOW_DOCUMENT_TYPE

值为 512,显示 DocumentType 节点。

NodeFilter.SHOW_ELEMENT

值为 1,显示 Element 节点。

NodeFilter.SHOW_ENTITY

值为 32,显示 Entity 节点。仅当创建一个以 Entity 节点为根的 TreeWalker 时,这才有意义。在这种情况下,这意味着 Entity 节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。

NodeFilter.SHOW_ENTITY_REFERENCE

值为 16,显示 EntityReference 节点。

NodeFilter.SHOW_NOTATION

值为 2048,显示 Notation 节点。仅当创建一个以 Notation 节点为根的 TreeWalker 时,这才有意义。在这种情况下,这意味着 Notation 节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。

NodeFilter.SHOW_PROCESSING_INSTRUCTION

值为 64,显示 ProcessingInstruction 节点。

NodeFilter.SHOW_TEXT

值为 4,显示 Text 节点。

TreeWalker.filter 只读

返回用于选择相关节点的 NodeFilter

TreeWalker.expandEntityReferences 只读

一个 Boolean 的标志位,表示在丢弃 EntityReference 时,必须同时丢弃其整个子树。

TreeWalker.currentNode

一个 Node,表示 TreeWalker 当前指向节点。

方法

此接口不继承任何方法。

注意:在 TreeWalker 的上下文中,如果节点存在于由 whatToShowfilter 参数确定的逻辑视图中,则该节点是可见的。(与该节点在屏幕上是否可见无关。)

TreeWalker.parentNode()

将当前 Node 移至文档顺序中的第一个可见祖先节点,并返回找到的节点。它还会将当前节点移到该节点。如果不存在这样的节点,或者在此之前在对象构造中定义的根节点之前,则返回 null,并且当前节点不变。

TreeWalker.firstChild()

将当前 Node 移动到当前节点的第一个可见子节点,并返回找到的子节点。它还会将当前节点移到该子节点。如果没有这样的子节点,则返回 null,并且当前节点不变。

TreeWalker.lastChild()

将当前 Node 移动到当前节点的最后一个可见子节点,并返回找到的子节点。它还会将当前节点移到该子节点。如果不存在这样的子节点,则返回 null,并且当前节点不变。

TreeWalker.previousSibling()

将当前 Node 移至其上一个同级节点(如果有),并返回找到的同级节点。如果没有这样的节点,则返回 null,并且当前节点不变。

TreeWalker.nextSibling()

将当前 Node 移至下一个同级节点(如果有),并返回找到的同级节点。如果没有这样的节点,则返回 null,并且当前节点不变。

TreeWalker.previousNode()

将当前 Node 按文档顺序移动到上一个可见节点,然后返回找到的节点。它还会将当前节点移到该节点。如果不存在这样的节点,或者在此之前在对象构造中定义的根节点之前,则返回 null,并且当前节点不变。

TreeWalker.nextNode()

将当前 Node 按文档顺序移动到下一个可见节点,然后返回找到的节点。它还会将当前节点移到该节点。如果没有这样的节点,则返回 null,并且当前节点不变。

规范

规范 状态 备注
DOM
TreeWalker 的定义
现行的标准 移除了 expandEntityReferences 属性。
Document Object Model (DOM) Level 2 Traversal and Range Specification
TreeWalker 的定义
已过时 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持1124993
currentNode1124993
expandEntityReferences1124 — 21993
filter1124993
firstChild1124993
lastChild1124993
nextNode1124993
nextSibling1124993
parentNode1124993
previousNode1124993
previousSibling1124993
root1124993
whatToShow1124993

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持3 支持 未知4 未知10.13
currentNode3 支持 未知4 未知10.13
expandEntityReferences3 支持 未知4 — 21 未知10.13
filter3 支持 未知4 未知10.13
firstChild3 支持 未知4 未知10.13
lastChild3 支持 未知4 未知10.13
nextNode3 支持 未知4 未知10.13
nextSibling3 支持 未知4 未知10.13
parentNode3 支持 未知4 未知10.13
previousNode3 支持 未知4 未知10.13
previousSibling3 支持 未知4 未知10.13
root3 支持 未知4 未知10.13
whatToShow3 支持 未知4 未知10.13

相关链接