Interface NodeVisitor
-
- All Known Implementing Classes:
Cleaner.CleaningVisitor
,Element.TextAccumulator
,HtmlToPlainText.FormattingVisitor
,Node.OuterHtmlVisitor
,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.
@FunctionalInterface public interface NodeVisitor
Node visitor interface. Provide an implementing class toNodeTraversor
or toNode.traverse(NodeVisitor)
to iterate through nodes.This interface provides two methods,
head(org.jsoup.nodes.Node, int)
andtail(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, andtail
to create the end tag. Thetail
method defaults to a no-op, so thehead
method is theFunctionalInterface
.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
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
head(Node node, int depth)
Callback for when a node is first visited.default void
tail(Node node, int depth)
Callback for when a node is last visited, after all of its descendants have been visited.
-
-
-
Method Detail
-
head
void head(Node node, int depth)
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
default void tail(Node node, int depth)
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.
-
-