Interface NodeVisitor
- All Known Implementing Classes:
-
W3CDom.W3CBuilder
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
traverse(Node)
or Node.traverse(NodeVisitor)
. The traversal is depth-first.
This interface provides two methods, head(
and tail(
. The head method is called when a node is first seen, and the tail method when all that node's children have been visited. As an example, head
can be used to emit a start tag for a node, and tail
to create the end tag. The tail
method defaults to a no-op, so the head
method is the FunctionalInterface
.
Example:
doc.body().traverse((node, depth) -> {
switch (node) {
case Element el -> print(el.tag() + ": " + el.ownText());
case DataNode data -> print("Data: " + data.getWholeData());
default -> print(node.nodeName() + " at depth " + depth);
}
});
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Callback for when a node is first visited.default void
Callback for when a node is last visited, after all of its descendants have been visited.default void
Run a depth-first traverse of the root and all of its descendants.
-
Method Details
-
head
Callback for when a node is first visited.The node may be modified (e.g.
Node.attr(
, replacedString) Node.replaceWith(
) or removedNode) Node.remove(
. If it's) instanceOf Element
, you may cast it to anElement
and access those methods.- Parameters:
-
node
- the node being visited. -
depth
- the depth of the node, relative to the root node. E.g., the root node has depth 0, and a child node of that will have depth 1.
-
tail
Callback for when a node is last visited, after all of its descendants have been visited.This method has a default no-op implementation.
Note that neither replacement with
Node.replaceWith(
nor removal withNode) Node.remove(
is supported during) tail(
.) - Parameters:
-
node
- the node being visited. -
depth
- the depth of the node, relative to the root node. E.g., the root node has depth 0, and a child node of that will have depth 1.
-
traverse
Run a depth-first traverse of the root and all of its descendants.- Parameters:
-
root
- the initial node point to traverse. - Since:
- 1.21.1
-