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 TypeMethodDescriptionvoidCallback for when a node is first visited.default voidCallback for when a node is last visited, after all of its descendants have been visited.default voidRun 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 anElementand 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
-