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.
NodeTraversor
or to Node.traverse(NodeVisitor)
to iterate through nodes.
This interface provides two methods, head(org.jsoup.nodes.Node, int)
and tail(org.jsoup.nodes.Node, int)
. The head method is called when the node is first seen, and the tail method when all of the 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
-
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 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(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.
-