/**
* Copyright (c) 2009-2015, Christer Sandberg
*/
package se.fishtank.css.selectors.dom;
/**
* DOM traversal
*
* @author Christer Sandberg
*/
public class Traversal {
private Traversal() {
}
/**
* Traverse all element nodes starting at {@code root}.
*
* @param root The root node.
* @param visitor The visitor that will be called for each element node.
*/
public static <T extends DOMNode<T, ?>> void traverseElements(T root, Visitor<T> visitor) {
if (root.getType() == DOMNode.Type.ELEMENT) {
visitor.visit(root);
}
for (T child = root.getFirstChild(); child != null; child = child.getNextSibling()) {
traverseElements(child, visitor);
}
}
}