Возможность разбора HTML-документа и построения дерева DOM (Java)

Возможно ли это и какие инструменты можно использовать для анализа html-документа в виде строки или из файла, а затем для построения дерева DOM, чтобы разработчик мог пройти по дереву через некоторый API.

Например:

DomRoot = parse("myhtml.html");

for (tags : DomRoot) {
}

Примечание: это документ HTML, а не XHtml.