在继续下面的语句之前,如何等待javax.xml.validation.Validator完成验证?

在继续下面的语句之前,如何等待javax.xml.validation.Validator完成验证?,java,xml,validation,Java,Xml,Validation,好吧,标题说明了一切 我知道这不是阻塞调用,但我需要等待它完成验证,然后再转到下一条语句 我该怎么做 我的ErrorHandler类 我不知道你所说的“我知道这不是阻拦电话”是什么意思。你怎么会这么想 Validator.validate是一个阻塞调用 如果要验证文档,请检查错误,您可以创建自己的ErrorHandler final Validator validator = schema.newValidator(); final List<SAXParseException> e

好吧,标题说明了一切

我知道这不是阻塞调用,但我需要等待它完成验证,然后再转到下一条语句

我该怎么做

我的ErrorHandler类 我不知道你所说的“我知道这不是阻拦电话”是什么意思。你怎么会这么想

Validator.validate
是一个阻塞调用

如果要验证文档,请检查错误,您可以创建自己的
ErrorHandler

final Validator validator = schema.newValidator();
final List<SAXParseException> errors = new ArrayList<SAXParseException>();
validator.setErrorHandler(new ErrorHandler() {

    public void warning(SAXParseException saxpe) throws SAXException {
        //ignore, log or whatever
    }

    public void error(SAXParseException saxpe) throws SAXException {
        errors.add(saxpe);
    }

    public void fatalError(SAXParseException saxpe) throws SAXException {
        //parsing cannot continue
        throw saxpe;
    }
});
final Source source = new StreamSource(new File("my.xml"));
validator.validate(source);
if(!errors.isEmpty()) {
    //there are errors.
}

在你等待的时候,你还需要做些什么吗?如果没有,那么除了等待调用返回或处理抛出的任何异常之外,您肯定不需要做任何其他事情。@JamesB我想做的就是。我只是想看看是否产生了错误。如果是,则终止application@JamesB由于生成的所有错误都被发送到
ErrorHandler
,因此我需要等待它返回,并查看在验证时是否生成了任何错误。如果是,终止
final Validator validator = schema.newValidator();
final List<SAXParseException> errors = new ArrayList<SAXParseException>();
validator.setErrorHandler(new ErrorHandler() {

    public void warning(SAXParseException saxpe) throws SAXException {
        //ignore, log or whatever
    }

    public void error(SAXParseException saxpe) throws SAXException {
        errors.add(saxpe);
    }

    public void fatalError(SAXParseException saxpe) throws SAXException {
        //parsing cannot continue
        throw saxpe;
    }
});
final Source source = new StreamSource(new File("my.xml"));
validator.validate(source);
if(!errors.isEmpty()) {
    //there are errors.
}
final Validator validator = schema.newValidator();
validator.setErrorHandler(new ErrorHandler() {

    public void warning(SAXParseException saxpe) throws SAXException {
        //ignore, log or whatever
    }

    public void error(SAXParseException saxpe) throws SAXException {
        throw saxpe;
    }

    public void fatalError(SAXParseException saxpe) throws SAXException {
        //parsing cannot continue
        throw saxpe;
    }
});
final Source source = new StreamSource(new File("my.xml"));
validator.validate(source);