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: // / 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);

Published by

Daniel Lemire

A computer science professor at the University of Quebec (TELUQ).

2 thoughts on “Using XPath in Java without loading the external DTD”

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    Markdown is turned off in code blocks:
     [This is not a link](

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see