如何解决Java-如何从xml验证文件中捕获所有异常/错误
我想从验证xml中获取所有错误。实际上,我的方法在捕获第一个错误后停止:
public List<String> validation(File file) {
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
List<String> statut = new ArrayList<>();
try {
assert xsd != null;
Schema schema = schemaFactory.newSchema(xsd);
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(file.getPath() + file.getname())));
statut.add(file.getname() + " is valid");
} catch (SAXException | IOException e) {
statut.add(file.getname() + " not valid :\n");
statut.add(e.getMessage());
}
return statut;
}
如何获取所有异常检测?
解决方法
您可以使用Validator.setErrorHandler(ErrorHandler)
注册自己的错误处理程序。
public abstract void setErrorHandler(ErrorHandler errorHandler)
设置
ErrorHandler
以接收在validate
方法调用期间遇到的错误。 错误处理程序可用于在验证期间自定义错误处理过程。设置ErrorHandler
后,在验证过程中发现的错误将首先发送到ErrorHandler。通过从处理程序中抛出
来继续验证SAXException
,错误处理程序可以立即中止进一步的验证。或者,例如,它可以在屏幕上显示错误,然后尝试通过正常返回ErrorHandler
如果从
Throwable
抛出任何ErrorHandler
,则validate方法的调用者将被抛出相同的Throwable
对象。在未首先向
SAXException
报告之前,Validator不允许抛出ErrorHandler
。
在您自己的错误处理程序中,您可以汇总异常,然后在验证之后根据需要/需要进行处理。
特别是,如果遇到错误,您可以继续进行验证,使您能够在处理程序中捕获所有错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。