Skip to content

Loading and parsing XML DOM documents in Java

Use the following snippet of code.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(new File("test.xml"));

When you parse a document, you can validate it against a DTD at the same time.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(true);
DocumentBuilder db = dbf.newDocumentBuilder();
class TestErrorHandler implements ErrorHandler {
private ArrayList al;
public TestErrorHandler() {
al = new ArrayList();
}
public void error(SAXParseException exception) throws SAXException {
al.add(exception);
}
public void fatalError(SAXParseException exception) throws SAXException {
al.add(exception);
}
public void warning(SAXParseException exception) throws SAXException {
al.add(exception);
}
public boolean hasErrors() {
return !al.isEmpty();
}
public void printErrors(PrintStream out) {
for (int i=0; i<al.size(); i++) {
SAXParseException spe = (SAXParseException) al.get(i);
out.println(spe.getSystemId() + ":" + spe.getLineNumber() + "," + spe.getColumnNumber());
out.println(new StringBuffer().append(spe.getLocalizedMessage()).toString());
}
}
}
}
...
TestErrorHandler teh = new TestErrorHandler();
db.setErrorHandler(teh);
doc = db.parse(new File("test.xml"));

Create a class that implements ErrorHandler.

Then set an instance of your error handler into the DocumentBuilder and parse documents. The error, fatalError, or warning methods will be called when important errors arise.

In the case above I’ve saved them up to be printed later on.