模块  java.xml
软件包  org.w3c.dom.traversal

Interface TreeWalker


  • 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创建时为true TreeWalker 。 要生成具有实体引用节点但没有实体扩展的文档视图,请使用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的逻辑视图。