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

Persistance des données Java Discussion :

JAXB (xjc) et pattern / Expression régulière


Sujet :

Persistance des données Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut JAXB (xjc) et pattern / Expression régulière
    Bonjour à tous,

    Je me permet de poster ici car mes recherches sont infructueuses.

    Je ne suis pas un programmeur très expérimenté et je manque pour l'instant un peu de pratique, donc je m'excuse pour les approximations ou les confusions que je pourrais faire.

    Je suis en phase de conception de mon programme et je suis en train de voir ce qu'il est possible ou non de faire avant de me lancer dans la réalisation.

    Voilà mon problème :

    J'ai commencé à définir un schéma XML, dont le but final serait de reproduire une "grammaire". "Grammaire", que seront censés respecter des fichiers que mon programme aura en entrée.
    Mon objectif est d'utiliser la commande xjc de l'API JAXB pour générer des classes java qui reprendront toutes ces propriétés.

    Or, lorsque je génère mes classes, je perds énormément d'informations, à commencer par toutes les expressions régulières que j'ai défini par restriction sur des types primitifs dans le schéma.

    Savez-vous donc si il est possible de les intégrer lors de la génération des classes par une option ou une astuce? Et si non, y a-t-il un autre moyen de définir une "grammaire" à l'extérieur du code java, (pour figé les versions du programme tout en lui permettant d'être évolutif).

    J'espère avoir été assez clair et vous remercie par avance.

  2. #2
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Salut,

    si mes souvenirs sont bons, ca ressemble a ca:

    tonJaxbContext.setSchema(Schema schema);

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    En fait ce que je voudrais c'est que les règles que j'ai défini soit retranscrites dans mes classes java, car je ne pourrai pas valider mes fichiers en entrée, ceux-ci n’étant pas au format XML.

    Et il me semble que ta réponse me permet de valider un document XML non ?

  4. #4
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Lu,

    je me suis fourvoyé, le setSchema s'appelle depuis un Marshaller ou un Unmarshaller.
    Si j'ai bien compris ton besoin tu as juste besoin de 'marshaller', donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonMarshaller.setSchema(tonSchema);
    Au moment de marshaller, ta grammaire sera vérifiée et une JaxbException sera levée en cas de violation.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Mais donc dans ce cas, il faut que je convertisse mes fichiers en entrée en document XML. Et ensuite je pourrais marshaller avec mon schema pour vérifier la grammaire.

    C'est bien ça?

    Or mon but était de pouvoir vérifier mes documents en entrée avant de commencer à les traiter.

  6. #6
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Que veux-tu faire exactement. Petit à petit, j'en arrive à ca:

    in.formatMaison -> Objets(JaxB) -> ???

    Faire du xsd c'est pratique quand on manipule des documents xml (marshalling et/ou unmarshalling). Si tu n'as pas de xml, je ne crois pas que ce soit une bonne démarche.
    Autant coder tes règles métiers directement dans ton parser maison.

    Cela dit, dans ton cas un hack possible est de parser ton fichier en format maison pour le transformer en ton modèle JaxB puis de tenter de marshaller avec le schema que tu as défini. Si pas d'exception c'est OK, sinon c'est qu'il y a un soucis au niveau de ton fichier d'entrée ou de ton parser maison

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Alors pour préciser un petit peu.

    Mon programme va prendre en entrée des fichiers (en .txt par exemple et n’ayant rien à voir avec du XML) qui contiendront des champs et dont la structure et régi par une grammaire (avec des champs optionnels, certains pouvant apparaître de 0 à n fois, d’autre devant matcher avec une expression régulière…).
    Mon programme va devoir extraire une partie des informations contenues dans ces fichiers pour les traiter.
    La grammaire pouvant être étendue ou modifié, j’aimerai que cela soit faisable sans avoir à toucher au cœur du programme. Et donc que les règles de la grammaire soient stockées dans un fichier séparé.

    C’est pourquoi j’ai pensé au schéma XML qui me permettraient de bien retranscrire mes règles et qui sont relativement accessibles pour être étendus ou modifiés.

    Le but étant que ceux-ci soit intégralement retranscris dans mes classes java pour par exemple vérifier qu’un champ match bien une expression régulière avant de le mettre dans un attribut.

    Or à l’heure actuelle, sur les petits exemples que je traite, j’arrive à marshaller un schéma XML et un fichier XML, j’arrive à détecter une erreur dans une association d’un attribut avec une valeur. Mais ce qu’il me manque, c’est le lien et la génération « automatique » de ces règles dans mes classes.

Discussions similaires

  1. java.util.regex Class Pattern: expression régulières chiffres romains
    Par bipbipman2003 dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 10/06/2011, 15h24
  2. [RegEx] Recherche du bon pattern pour une expression régulière
    Par erehcab dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2010, 13h06
  3. définition de pattern pour les expressions régulières
    Par hadler dans le forum Général Java
    Réponses: 2
    Dernier message: 04/12/2009, 14h23
  4. les patterns et les expressions régulières
    Par metwa dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/06/2009, 19h17
  5. Expression régulière pattern
    Par viscere dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 30/05/2006, 13h47

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