我有一个用于xml文件验证的代码:
try {
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setValidating(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
builder.setErrorHandler(new ErrorHandler() {
public void error(SAXParseException exception) throws SAXException {
System.out.println("Error: " + exception.getMessage());
}
public void fatalError(SAXParseException exception) throws SAXException {
System.out.println("Fatal error: " + exception.getMessage());
}
public void warning(SAXParseException exception) throws SAXException {
System.out.println("Warning: " + exception.getMessage());
}
});
Document doc = builder.parse(xml);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
我无法弄清楚应该如何组织我的异常处理,因此我可以像"File is valid!"
或类似地打印消息System.out.println(xml + " is valid!");
。
答案 0 :(得分:2)
如果这一行
Document doc = builder.parse(xml);
没有抛出异常,解析工作。在这一行之后做你想做的事。
ErrorHandler
方法的主体可能不仅应该打印输出并继续。致命错误的错误应该停止解析。
答案 1 :(得分:1)
只需在开始catch
子句之前添加该行。如果它到达那里,则意味着没有引起异常。
答案 2 :(得分:0)
您应该检查parse方法的javadoc。如果发生任何异常,它将返回null
。然后,您可以在try / catch块之后或doc == null
块中检查finally
。
答案 3 :(得分:0)
我设法解决了我的问题。我只需要在throw exception;
方法中添加ErrorHandler
行,以便跟踪验证过程。