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(org.jsoup.nodes.Node, int) and tail(org.jsoup.nodes.Node, int). 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(String), replacedNode.replaceWith(Node)) or removedNode.remove(). If it'sinstanceOf 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(Node)nor removal withNode.remove()is supported duringtail().- 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
-