Bom dia a todos,
Estou com um problema para validar um XML, eu sou meio novato nessa parte de XML e XSD, mas estou correndo atras e pesquisando, e até agora não achei nada que resolva o meu problema.
Eu tenho um arquivo XML que é passado para mim, eu tenho uma classe no Java para fazer a validação do XML com o XSD, mas a validação quando vai chamar o arquivo XSD no diretório, ele acusa erro.
Gostaria de saber se alguem pode me explica como realmente eu faço essa validação do XML.
Agradeço a Todos!!!
Se você tem o xsd você pode (deve) fazer a vinculação JAXB.
No NetBeans funciona assim:
No teu projeto você pede um novo -> Vinculação JAXB
Indica um nome para ela e aponta para o teu arquivo XSD.
Manda finalizar e o sistema irá criar as classes da vinculação em uma pasta específica chamada “Códigos fontes Gerados (JAXB)”. A pasta fica meio apagada, procure.
Ou seja, o JAXB criou as classes necessárias para você montar os objetos que poderão criar o teu XML validado.
Use essas classes ou compare com aquelas que você está querendo usar. Vai notar que tem muita coisa diferente.
Tem tags imprescindíveis para a validação.
Depois, montando e usando essas classes a validação certamente vai acontecer.
Boa sorte, qualquer coisa, é só falar.
Depois, para validar, é só usar algo assim>
public boolean validarSchema(File xml){
String erro = "";
String schema = "RetornoConsulta_v01.xsd";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", schema);
DocumentBuilder builder = null;
try
{
builder = factory.newDocumentBuilder();
builder.setErrorHandler( new SimpleErrorHandler());
//javax.swing.JOptionPane.showMessageDialog(prin, "schema lido");
} catch (ParserConfigurationException ex)
{
ex.printStackTrace();
erro = ex.toString();
}
org.w3c.dom.Document document;
try
{
document = builder.parse(xml.getPath());
org.w3c.dom.Node rootNode = document.getFirstChild();
} catch (IOException ex) {
ex.printStackTrace();
erro = ex.toString();
javax.swing.JOptionPane.showMessageDialog(prin, "Erro ao validar - " + erro);
return false;
} catch (SAXException ex) {
ex.printStackTrace();
erro = ex.toString();
javax.swing.JOptionPane.showMessageDialog(prin, "Erro ao validar - " + erro);
return false;
}
return true;
}