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.