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] Référence objet


Sujet :

Persistance des données Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [JAXB] Référence objet
    Bonjour !

    Je souhaite créer puis lire un fichier xml. Pour cela j'utilise JAXB.

    Mon problème est le référencement d'objets :

    J'ai une liste d'ordres de fabrication (OF) à gérer, j'ai donc crée cette liste d'OF dans mon .xsd.
    Un OF est caractérisé par plusieurs attributs, dont une liste d'OF prédécesseurs.

    Le but est d'avoir accès facilement aux données des OF prédécesseur sans se retaper une recherche dans la liste des OF.

    Pour cela j'ai donc rajouté dans les attributs d'un OF la liste de types OF dans mon .xsd, pour contenir les prédecesseurs :

    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
    	<xsd:complexType name="liste_des_OF_type">
    		<xsd:sequence>
    			<xsd:element name="OF" maxOccurs="unbounded" type="OF_type"/>
    		</xsd:sequence>
    		<xsd:attribute name="nombre" type="xsd:int"/>
    	</xsd:complexType>
     
    <xsd:complexType name="OF_type">
    		<xsd:sequence>
    			<xsd:element name="date_due" type="xsd:date"/>
    			<xsd:element name="type_pieces" type="xsd:string"/>
    			<xsd:element name="nombre_pieces" type="xsd:int"/>
    			<xsd:element name="priorite" type="xsd:int"/>
    			<xsd:element name="preemption" type="xsd:int"/>
    			<xsd:element name="date_disponibilite" type="xsd:date"/>
    			<xsd:element name="predecesseur" minOccurs="0" maxOccurs="unbounded" type="OF_type"/>			
    		</xsd:sequence>
    		<xsd:attribute name="id" type="xsd:string"/>
    	</xsd:complexType>
    Cela a, lors de la génération de mon fichier xml, l'effet de dupliquer les données, ce qui est logique. Voici un extrait du fichier xml qui est généré, j'ai séléctioné un OF de la liste qui a un prédécesseur :

    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
    <OF id="REF-7">
                        <date_due>2011-03-27+02:00</date_due>
                        <type_pieces>GAM-3</type_pieces>
                        <nombre_pieces>63</nombre_pieces>
                        <priorite>2</priorite>
                        <preemption>1</preemption>
                        <date_disponibilite>2011-03-27+02:00</date_disponibilite>
                        <liste_des_predecesseurs nombre="0"/>
                    </OF>
    <OF id="REF-8">
                <date_due>2011-03-27+02:00</date_due>
                <type_pieces>GAM-3</type_pieces>
                <nombre_pieces>192</nombre_pieces>
                <priorite>9</priorite>
                <preemption>0</preemption>
                <date_disponibilite>2011-03-27+02:00</date_disponibilite>
                <liste_des_predecesseurs nombre="1">
                    <predecesseur id="REF-7">
                        <date_due>2011-03-27+02:00</date_due>
                        <type_pieces>GAM-3</type_pieces>
                        <nombre_pieces>63</nombre_pieces>
                        <priorite>2</priorite>
                        <preemption>1</preemption>
                        <date_disponibilite>2011-03-27+02:00</date_disponibilite>
                        <liste_des_predecesseurs nombre="0"/>
                    </predecesseur>
                </liste_des_predecesseurs>
            </OF>
    Or, j'ai déja le descriptif complet de l'OF 7 plus haut dans ma liste des OF.

    De plus, quand je fais la lecture de mon fichier xml, l'objet OF 7 sera crée en double, une fois pour la liste des prédécesseurs, une fois pour la liste des OF.

    Je voulais donc savoir, s'il existe ou non un systeme de référence à placer dans mon schéma xsd pour éviter cette duplication.

    La seule piste de réponse que j'ai trouvé est l'utilisation de key, mais si j'ai bien compris, celles-ci ne garantissent que la correspondances entre identifiant, et ne référence rien. Ca fait deux jours que je cherche et rien -_-

    En espérant avoir été assez clair, je vous remercie de vos réponse.

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Bonjour,

    Tu peux essayer d'utiliser la notion de reference de XML comme ceci:

    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
     
    <OF id = "REF-7">
        <date_due>2011-03-27+02:00</date_due>
        <type_pieces>GAM-3</type_pieces>
        <nombre_pieces>63</nombre_pieces>
        <priorite>2</priorite>
        <preemption>1</preemption>
        <date_disponibilite>2011-03-27+02:00</date_disponibilite>
        <liste_des_predecesseurs nombre = "0"/>
    </OF>
    <OF id = "REF-8">
        <date_due>2011-03-27+02:00</date_due>
        <type_pieces>GAM-3</type_pieces>
        <nombre_pieces>192</nombre_pieces>
        <priorite>9</priorite>
        <preemption>0</preemption>
        <date_disponibilite>2011-03-27+02:00</date_disponibilite>
        <liste_des_predecesseurs nombre = "1">
            <predecesseur href= "#REF-7">
            </predecesseur>
        </liste_des_predecesseurs>
    </OF>

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je vais essayer de voir si c'est faisable dans le xsd...

    Merci de ta réponse.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai trouvé des types xsd qui permettent de faire les références, mais le problème de la duplication n'est toujours pas réglé.

    Ces types sont ID et IDREF mais je ne parviens pas à les utiliser correctement...

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci !

    J'ai compris grace à cette page beaucoup de choses qui me paraissaient très obscures...

    Je vais essayer de refaire mon xsd avec le schéma approprié afin de régler ce problème de doublon.

    Merci !

Discussions similaires

  1. Passer référence objet javascript via ajax
    Par fabienhespul dans le forum jQuery
    Réponses: 3
    Dernier message: 01/07/2010, 21h59
  2. Réponses: 16
    Dernier message: 30/10/2008, 18h33
  3. Supprimer référence objet
    Par aure298 dans le forum C#
    Réponses: 1
    Dernier message: 29/08/2008, 14h28
  4. référence objet et pid lors d'une création d'une application word
    Par mourad.zamoun dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/07/2008, 14h46
  5. [POO] Stockage de référence objet en session
    Par starn2000 dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 15h35

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