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 :

API pour générer des classes Java avec prise en compte des contraintes du XSD


Sujet :

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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut API pour générer des classes Java avec prise en compte des contraintes du XSD
    Bonjour,

    Je cherche une API pour générer des classes Java à partir d'un XSD, puis générer un fichier XML à partir de ces classes.

    En fait, j'ai déjà repéré JAXB et Castor, mais les classes générées ne tiennent pas compte des contraintes du XSD;

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xs:simpleType name="Propriete">
    	<xs:restriction base="xs:string">
    		<xs:maxLength value="5" />
    	</xs:restriction>
    </xs:simpleType>
    J'ai vu qu'il était possible de vérifier les contraintes au moment du marshalling/unmarshalling.

    N'existe-t-il pas d'API qui génère les classes Java directement avec ces contraintes ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void setPropriete(String psPropriete)
    {
     if(psPropriete.length > 5) throw Exception();
    ...
    }
    Merci pour votre aide.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    franchement je trouve que jaxb et le meilleur pour sa (enfin pour moi) sinon si tu n'arrive pas a généré du code correctement, c'est parce que jaxb génère juste le squelette des tes classe , donc faudra retravaillé ton code une fois généré
    Autre solution, c'est d'utilisé EMF (eclipse modling framework) mais la tu passe d'un diagrame UML que tu définis avec tes classes, tes attribues, et tes méthodes pour généré ton code java (les gueteurs et les seteurs son pris en compte)
    voila j’espère que sa va t'aidé n’hésite pas à poser des questions

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse.

    En fait, nous devons envoyer quotidiennement un fichier XML à un agent extérieur.

    On nous a fourni pour cela un XSD qui évolue au fil du temps, d'où l'intérêt d'une solution comme JAXB qui génère les objets Java automatiquement, et permet - après garnissage des objets - de générer le fichier XML.

    Du coup, je ne peux pas modifier les classes générées, car alors si une nouvelle version du XSD nous est communiquée, je dois reporter toutes les modifications (avec risques éventuels d'oublis).

    Pour l'instant, j'ai retenu la solution JAXB (sans validation des contraintes dans les objets Java). Au moment du marshalling, j'utilise un ValidationEventHandler qui soulève une exception si le flux XML généré ne respecte pas le XSD.

    Je continue de chercher une alternative plus complète... Avis à la population

    PS : pour info, un collègue sous .NET qui a la même problématique utilise un outil proposé par Microsoft qui génère les objets CSharp avec les règles de validation des contraintes contenues dans le XSD... Il doit bien exister un équivalent sous Java !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    surement je cherche de mon coté aussi dé que je trouve je te tien au courant
    j'ai un contacte qui fait a peu prés les même manipulations que toi donc je vais voir s'il peut fournir des explication ou des outilles
    voila !!! bonne journée a toi et bon courage , et si jamais tu trouve avant moi laisse un petit mot avec tes retrouvailles hhhh
    bonne journée

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    La validation en live ne me semble pas pertinente ...
    Imagine un éditeur XML qui "au fur et à mesure de la saisie" t'affiches une pop-up d'erreur à chaque caractère saisie.
    La validation d'un document n'a de sens quand il est finalisé, d'où la pertinence de valider uniquement lors des opérations (un)marshall.

    Exemple : pour le typage des données, j'avais un élément "générique" dont la structure dépendait du type et j'utilisais un attribut pour spécifier le type de structure (ok on peut peut-être faire mieux en XSD mais ca reste du domaine du possible).
    Je vois mal comment tu vas checker tout ça en Java ?

    Autre exemple un élément qui doit contenir exactement 20 éléments ? Comment tu vas ajouter/supprimer des éléments de ta liste si ton valideur t'interdit l'ajout ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 36
    Points
    36
    Par défaut
    Bonjour, personnellement je trouve xmlBeans très sympatique.

    Il permet de creer des classes a partir d'un fichier xsd (et biensur de les remplir avec un fichier xml) et de creer un fichier xml a partir des classes java généré

    voici un petit Tutorial que j'avais trouvé

    http://longbeach.developpez.com/tutoriels/XML/XMLBeans/

    En Espérant que cela t'aide

Discussions similaires

  1. [Acceleo] Générer des classes Java avec Acceleo en 5 minutes
    Par Mickael Baron dans le forum Eclipse Modeling
    Réponses: 2
    Dernier message: 22/06/2012, 08h38
  2. Compilation des classes JAVA avec tomcat
    Par UNIX107 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 23/03/2010, 10h54
  3. genere des classe java avec WSDL2Java
    Par Invité dans le forum Services Web
    Réponses: 0
    Dernier message: 06/05/2009, 01h51
  4. Réponses: 1
    Dernier message: 04/06/2008, 17h19

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