Mit dem NekoHTML-Parser ist es möglich, HTML-Code wie er in der Praxis auftritt, zu parsen. Das Maven-Artifakt lautet:
<dependency> <groupId>net.sourceforge.nekohtml</groupId> <artifactId>nekohtml</artifactId> <version>1.9.15</version> </dependency>
Das Parsen geht vonstatten, indem ein Parser erzeugt wird:
DOMParser parser = new DOMParser();
parser.setFeature("http://xml.org/sax/features/namespaces", false);
getParser().parse(new InputSource(inputStream));
Document document = getParser().getDocument();
Falls man keine Namespace-basierte Analyse vornehmen möchte, ist das Ausschalten der XML-Namespace-Handling wichtig. Sonst werden im HTML enthaltene Namespace-Notationen verwendet, in der Folge müssten diese bei XPath-Ausdrücken ebenfalls angegeben werden. Das ist prinziell möglich, aber umständlich und meist unnötig.
XPath xpath = XPathFactory.newInstance().newXPath();
Node node = (Node)xpath.evaluate("//FORM", document, XPathConstants.NODE);
Die HTML-Tags sind laut Spezifikation Upper-Case, die Attribute Lower-Case.

