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 xml via xsd [XSD]


Sujet :

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

  1. #1
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut validation xml via xsd
    Bonjour,

    Je dois valider un fichier XML via un xsd. Mais le fichier XML envoyé ne contient aucune information quand au xsd. C'est à dire que je n'est pas l'entête, j'ai directement le contenu du fichier XML.
    Comment puis-je réaliser la validation ?

    Par exemple, mon fichier correctement réalisé ressemble à ça :
    <ROOT xsi:noNamespaceSchemaLocation="fichierValidant.xsd" xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
    ....
    </ROOT>

    et le fichier que je recois ressemble à
    <ROOT>
    ....
    </ROOT>

    Est-il possible de donner le chemin du fichier de validation au moment du parse ?

    Voici mon code actuel :
    DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
    dbfactory.setValidating(true);
    DocumentBuilder db = dbfactory.newDocumentBuilder();

    db.setErrorHandler(new DefaultHandler());
    db.parse(new File(dataFile));

  2. #2
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
    public static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
    ...
    dbfactory.setValidating( true );
    dbfactory.setAttribute( JAXP_SCHEMA_LANGUAGE, "http://www.w3.org/2001/XMLSchema" );
     
    String shemaPath = "C:\\schema.xsd" ;		
    File f = new File( shemaPath );
     
    factory.setAttribute( JAXP_SCHEMA_SOURCE, f );
    La validation a lieu au moment où tu parses.

  3. #3
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Lorsque je réalise le code que tu m'as donné j'ai l'erreur suivante :
    java.lang.IllegalArgumentException: http://java.sun.com/xml/jaxp/properties/schemaLanguage
    at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setAttribute(DocumentBuilderFactoryImpl.java:118)
    at fr.gipmds.netducs.batch.stats11.service.TraitementFichierXML.init(TraitementFichierXML.java:76)
    at fr.gipmds.netducs.batch.stats11.service.BatchIEStats11.batchLaunch(BatchIEStats11.java:105)
    at fr.gipmds.netducs.batch.stats11.launch.Main.traiter(Main.java:110)
    at fr.gipmds.netducs.batch.stats11.launch.Main.main(Main.java:51)
    Exception in thread "main"
    Sais-tu d'ou cela vient ? Le parseur qui supporte pas ?

    Merci par avance,
    florentb

  4. #4
    Membre expérimenté Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Par défaut
    Bonjour,

    J'ai exactement le meme probleme depuis quelques temps,
    Je suis preneur de toutes informations ou pointeurs pour pouvoir valider un flux xml via un xsd avec JDK 1.4.2

    Merci d'avances


    Je re edite le post, parce qu'en fait je viens de m'apercevoir que je ne suis pas en JDK 1.4.2, mais en JDK 1.3.1 et c'est peut etre de la que viens le probleme, j'essaie de passer en 1.4.2 et je vous dis si ca fonctionne

  5. #5
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    je suis également un jdk 1.3.1 ... je suis friand de tes news

  6. #6
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    C'est ptetre à cause de ça alors. Je suis en 5.0.

  7. #7
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Après vérif de ma part, c'est effectivement cela ... merci de la piste ...
    Mais du coup je me retrouve au point de départ
    y aurait-il une autre solution ?

    Merci par avance,
    FlorentB

  8. #8
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    Ce n'est même pas Xerces qui est fourni avec le JDK 1.3, mais Crimson, et d'autre part le support par JAXP des W3C XML Schemas n'est accessible qu'à partir de la version 1.2 (le JDK 1.3 est livré avec une implémentation de JAXP 1.1 seulement).

    La solution que je vous conseille : récupérez la dernière version de Xalan même si vous n'utilisez pas ce processeur XSLT car Xalan intègre une version assez récente de Xerces (ce ne sera pas la toute dernière en date, mais en tout cas c'en sera une qui implémente JAXP 1.3). Pour installer Xalan, utilisez le mécanisme de "Endorsed Standards Override" (valable aussi pour le JDK 1.4). Le nom fait peur, mais il s'agit tout simplement de créer un répertoire ext dans le répertoire lib du JRE, et d'y placer les JAR de Xalan. Les classes placées dans ce répertoire ont la particularité d'être prioritaires sur les classes du CLASSPATH et même sur les classes du JDK. C'est expliqué en détail dans la FAQ de Xalan (voir http://xml.apache.org/xalan-j/faq.html#faq-N100BF et articles suivants).

    Bien sûr, vous pouvez ne mettre à jour que Xerces de la façon que j'ai mentionnée, mais ce serait dommage de garder une vieille version de Xalan alors qu'il est possible de tout mettre à jour en même temps.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  9. #9
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Merci bcp pour cette aide précieuse.

    FlorentB

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

Discussions similaires

  1. Validation XML via XSD en JavaScript
    Par alatox dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/03/2010, 22h24
  2. Validation XML via XSD en C#
    Par bdmax dans le forum C#
    Réponses: 1
    Dernier message: 26/05/2008, 14h48
  3. Valider XML avec XSD
    Par neilbgr dans le forum Langage
    Réponses: 10
    Dernier message: 26/03/2008, 16h01
  4. Réponses: 3
    Dernier message: 19/02/2008, 14h34
  5. [XSD] Valider un fichier XML via XSD
    Par laury33 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 05/03/2007, 16h46

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