Validando XML com XSD [RESOLVIDO]

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;
    }