Module java.xml

Interface TreeWalker


public interface TreeWalker
TreeWalker 对象用于使用其 whatToShow 标志和过滤器(如果有)定义的文档视图导航文档树或子树。任何使用 TreeWalker 执行导航的函数将自动支持由 TreeWalker 定义的任何视图。

从子树的逻辑视图中省略节点可能导致结构与完整的未过滤文档中相同子树的结构大不相同。在 TreeWalker 视图中作为兄弟节点的节点可能是原始视图中不同、相距很远的节点的子节点。例如,考虑一个跳过除文本节点和文档根节点之外所有节点的 NodeFilter。在结果中的逻辑视图中,所有文本节点将作为根节点的直接子节点并列出,无论原始文档的结构有多深嵌套。

另请参阅 文档对象模型(DOM)级别2遍历和范围规范

自从:
9, DOM Level 2
  • Method Summary

    Modifier and Type
    Method
    Description
    TreeWalker 移动到当前节点的第一个可见子节点,并返回新节点。
    TreeWalker 当前定位的节点。
    boolean
    此标志的值确定实体引用节点的子节点是否对 TreeWalker 可见。
    用于筛选节点的过滤器。
    TreeWalkerroot 节点,在创建时指定。
    int
    此属性确定通过 TreeWalker 显示哪些节点类型。
    TreeWalker 移动到当前节点的最后一个可见子节点,并返回新节点。
    TreeWalker 移动到相对于当前节点在文档顺序中的下一个可见节点,并返回新节点。
    TreeWalker 移动到当前节点的下一个兄弟节点,并返回新节点。
    移动并返回当前节点的最近可见祖先节点。
    TreeWalker 移动到相对于当前节点在文档顺序中的上一个可见节点,并返回新节点。
    TreeWalker 移动到当前节点的上一个兄弟节点,并返回新节点。
    void
    setCurrentNode(Node currentNode)
    TreeWalker 当前定位的节点。
  • Method Details

    • getRoot

      Node getRoot()
      TreeWalkerroot 节点,在创建时指定。
    • 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

      void setCurrentNode(Node currentNode) throws DOMException
      TreeWalker 当前定位的节点。
      对 DOM 树的更改可能导致当前节点不再被 TreeWalker 的关联过滤器接受。 currentNode 也可以明确设置为任何节点,无论它是否在由 root 节点指定的子树内或是否被过滤器和 whatToShow 标志接受。即使它不是当前视图的一部分,也会相对于 currentNode 进行进一步遍历,通过在请求的方向应用过滤器;如果无法进行遍历,则不会更改 currentNode
      抛出:
      DOMException - NOT_SUPPORTED_ERR: 如果尝试将 currentNode 设置为 null
    • parentNode

      Node parentNode()
      移动并返回当前节点的最近可见祖先节点。如果搜索 parentNode 试图从 TreeWalkerroot 节点向上移动,或者找不到可见祖先节点,则此方法保留当前位置并返回 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 试图从 TreeWalkerroot 节点向上移动,则返回 null,并保留当前节点。
      返回:
      新节点,如果当前节点在 TreeWalker 的逻辑视图中没有上一个节点,则返回 null
    • nextNode

      Node nextNode()
      TreeWalker 移动到当前节点相对于文档顺序中的下一个可见节点,并返回新节点。如果当前节点没有下一个节点,或者搜索下一个节点尝试从 TreeWalkerroot 节点向上移动,则返回 null,并保留当前节点。
      返回:
      新节点,如果当前节点在 TreeWalker 的逻辑视图中没有下一个节点,则返回 null