Tenho uma validação de XML com XSD no java que já funciona, porém ao validar o XML o validator pega o primeiro erro e para a validação. Gostaria de saber se tem alguma forma de validar o XML como um todo, ou seja caso o validator encontre erro, não pare a validação e valide o restante do arquivo.
@Override
public boolean validarInputStream(InputStream stream) throws Exception {
String diretorioXSD = config.getUrlArquivoExternoValidacaoXsd();
Source xmlFile = new StreamSource(stream);
File schemaFile = new File(diretorioXSD);
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
schemaFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING,false);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
try {
logger.info("Diretório do arquivo XSD de validação: " + diretorioXSD);
logger.info("Validar o XTE");
validator.validate(xmlFile);
this.mensagem = "A estrutura do arquivo est\u00e1 v\u00e1lida.";
logger.info("Validado com sucesso.");
return true;
} catch (SAXException e) {
this.mensagem = String.format("A estrutura do arquivo n\u00e3o est\u00e1 v\u00e1lida. Motivo: %s", e);
logger.error("A estrutura do arquivo não está válida, verificando motivos.", e);
} catch (Exception e) {
this.mensagem = String.format("Ocorreu um erro ao validar a estrutura do arquivo. Motivo: %s", e);
logger.error("Ocorreu um erro ao validar a estrutura do arquivo.", e);
}
return false;
}