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 :

Validation documents XML avec Schema


Sujet :

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

  1. #1
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut Validation documents XML avec Schema
    Bonjour,

    J'ai écrit une classe permettant de valider mes docs XML grâce à un schema.

    Plusieurs questions viennent à mon esprit surdeveloppé:

    1) Pourquoi faut il préciser le chemin du doc xsd, sachant qu'il est définit dans l'élement racine de l'arbre?

    2) Existe il un moyen pour valider mes docs XML sans définir le chemin du xsd puisque'il faut le préciser dans le code java? (bon, je sais je l'avais demandé il y a quelques jours, mais bon, )

    3) Pourquoi il pleut toujours en bretagne???


    Merci!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut
    Je pense que ceux qui ont créé la classe de validation XML basée sur un schéma ont trouvé plus pratique de connaître directement l'emplacement du schéma.
    Ce n'est surement pas obligatoire de procéder ainsi, ils auraient pu aller trouver l'emplacement du schéma dans le document XML, c'est comme ça que le XML a prévu la validation d'un document je pense.

    C'est un peu bizarre mais je ne pense pas qu'il y ait d'autres solutions si ce n'est trouver un valideur qui ne demande pas de préciser l'emplacement du schéma.

  3. #3
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    Merci pour ta réponse, même si je nous ne sommes pas plus avancé.
    Par contre, quand je valide mes xml je trouve une redondance dans les erreurs. Savez vous pourquoi?


    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
     
    import java.io.File;
    import javax.xml.parsers.*;
    import javax.xml.XMLConstants;
    import javax.xml.validation.Schema;
    import javax.xml.validation.SchemaFactory;
     
    public class ValiderAvecSchema {
    	private Schema xsd = null;
     
    	public void insererXSD(String xsdFileName) {
    		try {
    			SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    			sf.setErrorHandler(new BillyErrorHandler());
     
    			xsd = sf.newSchema(new File(xsdFileName));
     
    		} catch (Exception err) {
    			//err.printStackTrace();
    			//System.out.println("Erreur ValiderAvecSchema: " + err.getMessage());
    		}  
    	}
     
    	public void valider(String xmlFileName) {
    		try {		
    			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    			dbf.setNamespaceAware(true);
    			dbf.setSchema(xsd);
     
    			DocumentBuilder db = dbf.newDocumentBuilder();
    			db.setErrorHandler(new BillyErrorHandler());
    			db.parse(xmlFileName);
     
    			System.out.println("\tCe document est valide.");
     
    		} catch (Exception err) {
    			//err.printStackTrace();
    			//System.out.println("Erreur ValiderAvecSchema: " + err.getMessage());
    		}  
    	}
    }
     
     
     
     
    import org.xml.sax.ErrorHandler; 
    import org.xml.sax.SAXException; 
    import org.xml.sax.SAXParseException;
     
    public class BillyErrorHandler implements ErrorHandler { 
     
    	public void error(SAXParseException sex) throws SAXException {
    		System.err.println("\tErreur Ligne " + sex.getLineNumber()); 
    		System.err.println("\t   -> Erreur : " + sex.getMessage()); 
    	} 
     
    	public void fatalError(SAXParseException sex) throws SAXException {
    		System.err.println("\tErreur Fatale Ligne " + sex.getLineNumber()); 
    		System.err.println("\t   -> Erreur : " + sex.getMessage()); 
     	} 
     
     	public void warning(SAXParseException sex) throws SAXException {
     		System.out.println("\tAvertissement Ligne " + sex.getLineNumber()); 
     		System.out.println("\t   -> Erreur : " + sex.getMessage()); 
    	}
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	   -> Erreur : cvc-attribute.3: The value '86792018xxxxxxx' of attribute 'nucb' on element 'BANQUE' is not valid with respect to its type, 'numCompte_c'.
    	Erreur Ligne 58
    	   -> Erreur : cvc-attribute.3: The value '86792018xxxxxxx' of attribute 'nucb' on element 'BANQUE' is not valid with respect to its type, 'numCompte_c'.
    	Erreur Ligne 103
    	   -> Erreur : cvc-enumeration-valid: Value 'O' is not facet-valid with respect to enumeration '[F, f, C, c]'. It must be a value from the enumeration.
    	Erreur Ligne 103
    	   -> Erreur : cvc-enumeration-valid: Value 'O' is not facet-valid with respect to enumeration '[F, f, C, c]'. It must be a value from the enumeration.
       ...

    Merci

Discussions similaires

  1. [XSD] Problème validation xml avec schema
    Par Loki13 dans le forum Valider
    Réponses: 1
    Dernier message: 24/10/2008, 20h19
  2. [XSD] Valider un document XML avec plusieurs XSD
    Par Cbast dans le forum Valider
    Réponses: 1
    Dernier message: 11/02/2008, 08h57
  3. Valider un document XML avec un XML Schema
    Par illmonkey dans le forum Général Python
    Réponses: 6
    Dernier message: 31/10/2006, 11h51
  4. [Validation] Valider un XML avec un schema
    Par pmartin8 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 21/09/2006, 21h22
  5. [XSD][JAVA] Valider un XML avec un XSD schéma
    Par vad dans le forum Valider
    Réponses: 1
    Dernier message: 17/08/2005, 11h47

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