Partage
  • Partager sur Facebook
  • Partager sur Twitter

Validation d'un fichier XML avec un XSD

Sujet résolu
1 juillet 2013 à 12:25:40

Bonjour à tous !

Dans le cadre d'un projet, il faut que je puisse valider un fichier XML avec le fichier XSD associé. Je télécharge le XML grâce à un script, et j'aimerais le vérifier avant de le parser (il ne faut pas que j'ai d'erreur de parsage c'est pour ca que j'aimerais le vérifier d'abord). De plus le fichier est très lourd donc je ne veux pas lancer un parsage qui n'aboutira pas. Malheureusement je n'ai rien vu de très clair...

Avez-vous des idées ?

Merci d'avance :)

Matthieu526

  • Partager sur Facebook
  • Partager sur Twitter
2 juillet 2013 à 12:01:52

J'ai trouvé la solution, un truc vachement simple et super bien ! Je vous fait partager :

public class ValidationXML {

    /**
     * Cette fonction permet de savoir si un document XML est valide ou non.
     * @param fichierXML On recoit le nom du fichier XML à valider en paramètre.
     * @throws SAXException On jette les erreurs liées au parseur SAX.
     * @throws IOException On jette les erreurs liées au IO.
     */
    public static void validerXML(String fichierXML) throws SAXException, IOException {

        // 1. Récupère une "factory" pour le XML Schema du W3C
        SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
        
        // 2. Compile le schéma
        File schemaLocation = new File("schema.xsd");
        Schema schema = factory.newSchema(schemaLocation);
    
        // 3. Récupère un validateur depuis le schéma
        Validator validator = schema.newValidator();
        
        // 4. Parse le document que l'on veut vérifier
        Source source = new StreamSource(fichierXML);
        //Source source = new StreamSource(args[0]);
        
        // 5. Vérifie le document
        try {
            validator.validate(source);
            System.out.println(fichierXML+ " est valide.");
            //System.out.println(args[0] + " est valide.");
        }
        catch (SAXException ex) {
            System.out.println(fichierXML + " n'est pas valide car ");
            //System.out.println(args[0] + " c'est pas valide car ");
            System.out.println(ex.getMessage());
        }   
    }
}



  • Partager sur Facebook
  • Partager sur Twitter
17 juillet 2018 à 13:54:34 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


22 octobre 2018 à 14:55:57 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code