Boa tarde,
desenvolvi uma validação de XML atraves de um arquivo xsd com a seguinte estrutura:public String validate(String xml) {
String saida = "";
InputStream xsd = XmlValidator.class.getResourceAsStream("shiporder.xsd");
try {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setNamespaceAware(true);
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes());
Document doc = docBuilder.parse(is);
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaFile = new StreamSource(xsd);
Schema newSchema = (Schema) factory.newSchema(schemaFile);
Validator validator = newSchema.newValidator();
validator.validate(new DOMSource(doc));
saida = "SUCESSO";
} catch (DOMException ex) {
ex.printStackTrace();
saida = "DOM";
} catch (SAXException ex) {
saida = ex.getMessage();
} catch (IOException ex) {
ex.printStackTrace();
saida = "IO";
} catch (ParserConfigurationException ex) {
ex.printStackTrace();
saida = "PARSER_CONFIGURATION";
}
return saida;
}
funciona perfeitamente...mas eu preciso fazer uma alteração.
Quando é encontrado um erro no xml, o metodo lança uma exceção e finaliza, porem eu preciso que ele mostre todos os erros de uma vez ao executar. pois agora ele acha um erro e para, ai eu tenho q arrumar e executar de novo e arrumar o proximo, e assim até não ter mais erros.
Alguem ai pode me ajudar, estou pesquisando mas ainda não encontrei nda util?
Obrigado