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 :

Limiter le nombre de noeuds enfants parcourus par le Marshaller


Sujet :

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

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Points : 100
    Points
    100
    Par défaut Limiter le nombre de noeuds enfants parcourus par le Marshaller
    Bonjour,

    J'utilise JAXB pour générer une représentation xml de mes pojos.
    J'ai fait face à plusieurs soucis (comme des références circulaires, des tables sans clés primaires - merci les concepteurs de la base de données...).
    J'en suis à la génération du XML après recherche d'un objet dans la base.
    Pour la partie récupération de données j'utilise JPA.

    Avec JAXB pas de soucis pour la génération du XSD.
    Maintenant je souhaite faire un marshall de mon objet.
    Seulement le schéma étant tellement complexe le fichier en devient énorme.
    Y'a t'il un moyen de préciser à JAXB quelle profondeur maximum il doit atteindre ?
    en d'autres termes combien de nœuds enfants maximum doit-il suivre ?

    D'avance merci.

    HadanMarv

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Après pas mal de recherche, je ne trouve toujours pas de solution.
    j'ai téléchargé les sources de Jaxb ainsi que les implémentations.
    Pour le moment je n'ai pas trouvé de solution.

    Est-ce compréhensible ?

    PS : est-ce que par hasard, quelqu'un aurait déjà tenté d'installer le projet depuis le SVN java.net ? Si oui pouvez-vous me contacter en MP ?

    D'avance merci

    HadanMarv

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 563
    Points : 21 627
    Points
    21 627
    Par défaut
    Citation Envoyé par HadanMarv Voir le message
    Est-ce compréhensible ?
    On a parfaitement compris ce que tu veux faire. Mais je ne vois pas du tout pourquoi il y aurait une fonction de ce genre.

    On sérialise un objet ou on ne le sérialise pas, il n'y a pas de "alors on le sérialise, mais pas tout, on s'arrête au milieu, c'est chiant quand il y en a trop." Si tu veux faire ça, tu crées d'autres objets qui contiennent ce que tu veux ni plus ni moins, et c'est ça que tu sérialises.
    En tout cas, moi c'est ce que je dirais si je faisais des Marshallers. Je ne peux pas garantir qu'aucune option n'existe pour faire ce que tu demandes.

    Citation Envoyé par HadanMarv Voir le message
    PS : est-ce que par hasard, quelqu'un aurait déjà tenté d'installer le projet depuis le SVN java.net ? Si oui pouvez-vous me contacter en MP ?
    Moi non. Mais on ne demande pas de MP. Si c'est intéressant, c'est intéressant pour tout le monde.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par thelvin Voir le message
    On a parfaitement compris ce que tu veux faire. Mais je ne vois pas du tout pourquoi il y aurait une fonction de ce genre.
    En fait, l'utilité est certes relative bien que dans mon cas il s'agit de l'utiliser dans le cas d'export de données pour du reporting. Le client a parfois des demandes assez ciblée. il n'a donc pas besoin nécessairement de toute la grappe d'objet.

    Citation Envoyé par thelvin Voir le message
    Moi non. Mais on ne demande pas de MP. Si c'est intéressant, c'est intéressant pour tout le monde.
    Autant pour moi, c'était juste pour éviter de polluer le post avec un autre sujet.

    HadanMarv

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Points : 100
    Points
    100
    Par défaut
    Je pense qu'avec un exemple cela sera plus parlant en voici donc un très simpliste mais qui j'en suis sûre aidera à la réflexion :

    Une class Equipe :
    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
     
    @Entity
    @Table(name="equipes")
    @XmlRootElement(name="equipe")
    @XmlAccessorType(XmlAccessType.FIELD)
    class Equipe {
      @Id
      @Column(name="id", unique=true, nullable=false)
      private Integer id;
     
      @Column(name="nom", nullable=false, length=50, unique=true)
      private String nom
     
      //bi-directional many-to-one association to Joueur
      @OneToMany(mappedBy="equipe", fetch=FetchType.LAZY)
      private List<Joueur> joueurs;
    }
    Une class Joueur :
    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
     
    @Entity
    @Table(name="joueurs")
    @XmlRootElement(name="joueur")
    @XmlAccessorType(XmlAccessType.FIELD)
    class Joueur {
      @Id
      @Column(name="id", unique=true, nullable=false)
      private Integer id;
     
      @Column(name="nom", nullable=false, length=50, unique=true)
      private String nom
     
      //bi-directional many-to-one association to Equipe
      @ManyToOne(fetch=FetchType.LAZY)
      @JoinColumn(name="equipe_id")
      private Equipe equipe;
    }
    Je précise que c'est le style de code généré par le plug-in Eclipse en lien avec JPA, il prend la base de données et en fait des pojo annotés. On se retrouve à pouvoir naviguer dans les deux sens dans la grappe d'objet ce qui est relativement intéressant.
    Cependant en ce qui concerne JAXB on est obligé de rajouter une annotation :
    Sinon il nous lance une exception de références circulaire ce qui reste logique.

    Donc dans mon premier test, je recherche une équipe et je souhaiterai qu'il me remonte la liste des joueurs.
    Dans ce cas il faudrait que lorsqu'il récupère le joueur il ne continue pas à récupérer l'équipe du joueur puisque c'est mon point de départ.

    Dans mon second test, je recherche un joueur et je souhaiterai qu'il me remonte l'équipe.
    Dans ce cas il faudrait que lorsqu'il récupère l'équipe il ne continue pas à récupérer les joueurs puisque c'est mon point de départ (enfin dans un premier temps à terme pourquoi pas mais rien ne sert de mettre toute la complexité tout de suite).

    Voilà j'espère qu'avec cette exemple simpliste le problème posé et plus clair.

    D'avance merci,

    HadanMarv

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/05/2015, 10h28
  2. [XSLT 2.0]Calculer le nombre de noeuds max contenu par un fragment-node
    Par Louis-Guillaume Morand dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 18/03/2007, 01h10
  3. [XSLT] Nombre de noeuds enfants
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/10/2006, 16h58
  4. Limiter le nombre de caractère par ligne d'un textarea
    Par rantanplan08 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 04/01/2006, 19h31
  5. Limiter le nombre d'enregistrements renvoyés par un SELECT
    Par Wilco dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/11/2004, 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