IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Problème de XML validation par fichier XSD:org.xml.sax.SAXNotRecognizedException [XSD]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Problème de XML validation par fichier XSD:org.xml.sax.SAXNotRecognizedException
    Bonjour,

    J'ai trouvé un tutoriel sur le net pour faire des validations xml avec xsd mais je n'arrive pas à faire cette vérification...

    J'obtiens l'exception ci-dessous, quelqu'un aurait une idée sur le problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    org.xml.sax.SAXNotRecognizedException: Property: http://java.sun.com/xml/jaxp/properties/schemaSource
    false

    Lorsque j'exécute ce code (sous une jvm 1.4)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    package xmltest;
    import java.io.File;
    import java.io.IOException;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.w3c.dom.Document;
    import org.xml.sax.ErrorHandler;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.xml.sax.helpers.DefaultHandler;
     
    /*
     * Created on 15 mai 2005
     */
     
    /**
     * Exemple rapde de validation d'un fichier XML avec DOM et SAX en utilisant un XSD
     * (XMLSchema)
     */
    public class XmlValidator {
     
        static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
     
        static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
     
        static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
     
        static boolean isValid;
     
        static {
            isValid = false;
        }
     
        public static boolean validXMLWithDOM(String xmlFile, String xsdFile) {
            isValid = true; // Valide jusqu'à ce qu'une erreur se produise !
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            dbf.setIgnoringComments(true);
            dbf.setNamespaceAware(true);
            dbf.setValidating(true);
            dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
            dbf.setAttribute(JAXP_SCHEMA_SOURCE, new File(xsdFile));
            try {
                // Parsage du fichier XML avec DOM
                DocumentBuilder db = dbf.newDocumentBuilder();
                db.setErrorHandler(new ErrorHandler() {
                    public void fatalError(SAXParseException e) {
                        System.out
                                .println("Erreur de validation XSD - Erreur fatal");
                        isValid = false;
                    }
     
                    public void error(SAXParseException e) {
                        System.out.println("Erreur de validation XSD - Erreur");
                        isValid = false;
                    }
     
                    public void warning(SAXParseException e) {
                        System.out.println("Erreur de validation XSD - Warning");
                        isValid = false;
                    }
                });
                Document doc = db.parse(xmlFile);
            } catch (ParserConfigurationException pcee) {
                System.out.println(pcee);
                return false;
            } catch (IOException ioe) {
                System.out.println(ioe);
                return false;
            } catch (SAXException saxe) {
                System.out.println(saxe);
                return false;
            }
            return isValid;
        }
     
        public static boolean validXMLWithSAX(String xmlFile, String xsdFile) {
            isValid = true;
            try {
                SAXParserFactory spf = SAXParserFactory.newInstance();
                spf.setNamespaceAware(true);
                spf.setValidating(true);
                SAXParser sp = spf.newSAXParser();
                sp.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
                sp.setProperty(JAXP_SCHEMA_SOURCE, xsdFile);
                sp.parse(xmlFile, new DefaultHandler(){
                    public void fatalError(SAXParseException e) {
                        System.out
                                .println("Erreur de validation XSD - Erreur fatal");
                        isValid = false;
                    }
     
                    public void error(SAXParseException e) {
                        System.out.println("Erreur de validation XSD - Erreur");
                        isValid = false;
                    }
     
                    public void warning(SAXParseException e) {
                        System.out.println("Erreur de validation XSD - Warning");
                        isValid = false;
                    }
                });
            } catch (SAXException se) {
                System.out.println(se);
                return false;
            } catch (ParserConfigurationException pce){
                System.out.println(pce);
                return false;
            } catch (IOException ioe){
                System.out.println(ioe);
                return false;
            }
            return isValid;
        }
     
        public static void main(String[] args) {
            System.out.println(XmlValidator.validXMLWithDOM("fichier1.xml", "fichier1.xsd"));
            System.out.println(XmlValidator.validXMLWithSAX("fichier1.xml", "fichier1.xsd"));
        }
    }

    le fichier1.xml est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <personne xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:/fichier1.xsd">
      <nom>De Latour</nom>
      <prenom>Jean</prenom>
      <date_naissance>1967-08-13</date_naissance>
    </personne>

    le fichier1.xsd:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="personne">
         <xs:complexType>
            <xs:sequence>
               <xs:element name="nom" type="xs:string"/>
               <xs:element name="prenom" type="xs:string"/>
               <xs:element name="date_naissance" type="xs:date"/>
            </xs:sequence>
         </xs:complexType>
      </xs:element>
    </xs:schema>

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Solution
    J'ai téléchargé l'archive Xerces-J-bin.2.9.0.zip sur http://xerces.apache.org/xerces-j/

    Et ajouté au class path de mon projet :
    resolver.jar
    serializer.jar
    xercesImpl.jar
    xercesSamples.jar
    xml-apis.jar

    Et ca marche !


  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Meme Erreur
    Bonjour,

    j ai fais la meme erreur que vous par contre , lorsque je commente les 2 lignes :

    sp.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
    sp.setProperty(JAXP_SCHEMA_SOURCE, xsdFile);

    mon parseur XML marche sans probléme et il me permet de valider mon
    fichier XML à partir de son schéma.

    Est ce que ces deux lignes sont indispensables pour valider le fichier XML ou pas ?

    Cordialement
    Badr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Valider un fichier XML avec un fichier XSD
    Par Yvan_F1 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/11/2009, 03h47
  2. Réponses: 3
    Dernier message: 24/07/2009, 14h04
  3. [XSD] Valider un XML avec un fichier XSD
    Par italiasky dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 25/09/2008, 19h37
  4. XML validation par XSD
    Par Psykotik dans le forum C#
    Réponses: 1
    Dernier message: 18/01/2007, 13h37
  5. Réponses: 4
    Dernier message: 23/06/2005, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo