Daniel Lemire's blog

, 1 min read

Using XPath in Java without loading the external DTD

Java is a complicated mess. I just wasted 3 hours figuring out how to use XPath expressions in Java 1.5 without loading the external DTD. Thanks to the absence of any worthy documentation, I had to guess, and guess again, until I came up with this.

DocumentBuilderFactory dbfact = DocumentBuilderFactory.newInstance();
dbfact.setAttribute(“http: // apache.org / xml / features / nonvalidating / load-external-dtd”,false);
DocumentBuilder builder = dbfact.newDocumentBuilder();
Document indexname_input = builder.parse(someinputstream);
XPathFactory fact = XPathFactory.newInstance();
XPath xpath = fact.newXPath();
String title = xpath.evaluate(“string(//frontmatter/titlepage/title)”, indexname_input);