微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java-如何从xml验证文件中捕获所有异常/错误

如何解决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 举报,一经查实,本站将立刻删除。