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 :

[Digester] - Parser un XML bizarre


Sujet :

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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut [Digester] - Parser un XML bizarre
    Bonjour,

    J'utilise Digester sur des fichiers XML classiques par contre, je bute sur un et je voulais juste avoir votre avis sur la faisabilité du mapping dont voici l'exemple ci-dessous.

    Merci à vous.

    Cordialement,
    Ulrich.

    L'exemple :

    L'idée est que à chaque fois que je rencontre la pattern "pages-jurisdictions/page" je crée une liste pour ranger mes "control".
    Mais en fait, j'ai besoin de créer deux liste pour le même pattern (une pour "control" et une pour "jurisdiction") Mais est-ce possible ?

    ----- Le fichier à mapper -------
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <pages-jurisdictions>
      <page name="PAGE_CHECK_HABILITATION">
        <jurisdiction name="READ"/>
        <jurisdiction name="WRITE"/>
      </page>
     
      <page name="PAGE_JURISDICTION_02">
        <jurisdiction name="ACCESS_JURISDICTION_02"/>
        <control name="CONTROL_01" style="INACTIF">
          <jurisdiction name="ACCESS_CONTROL_01"/>
        </control>
      </page>
     
      <page name="PAGE_JURISDICTION_03">
        <control name="CONTROL_02" style="INACTIF">
          <jurisdiction name="ACCESS_CONTROL_02"/>
        </control>
      </page>
    </pages-jurisdictions>
    ----- Mon mapping -------
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    // create the digester
    Digester digester = new Digester();
     
    // create the pages bean
    digester.addObjectCreate("pages-jurisdictions", PagesJurisdictionsBean.class);
     
    // **** party ************************************************************************************
    // create the page bean list
    digester.addObjectCreate("pages-jurisdictions", ArrayList.class);
    // create the page bean
    digester.addObjectCreate("pages-jurisdictions/page", PageBean.class);
    // set the property of page bean
    digester.addSetProperties("pages-jurisdictions/page");
    // add the page bean in page bean list
    digester.addSetNext("pages-jurisdictions/page", "add");
    // add the page bean list
    digester.addSetNext("pages-jurisdictions", "setPages");
     
    // **** party ************************************************************************************
    // create the control bean list
    digester.addObjectCreate("pages-jurisdictions/page", ArrayList.class);
    // create the control bean
    digester.addObjectCreate("pages-jurisdictions/page/control", PageControlBean.class);
    // set the property of control bean
    digester.addSetProperties("pages-jurisdictions/page/control");
    // add the control bean in control bean list
    digester.addSetNext("pages-jurisdictions/page/control", "add");
    // add the control bean list
    digester.addSetNext("pages-jurisdictions/page", "setControls");
     
    // **** party ************************************************************************************
    // create the jurisdiction bean list
    digester.addObjectCreate("pages-jurisdictions/page/control", ArrayList.class);
    // create the jurisdiction bean
    digester.addObjectCreate("pages-jurisdictions/page/control/jurisdiction", PageJurisdictionBean.class);
    // set the property of jurisdiction bean
    digester.addSetProperties("pages-jurisdictions/page/control/jurisdiction");
    // add the jurisdiction bean in jurisdiction bean list
    digester.addSetNext("pages-jurisdictions/page/control/jurisdiction", "add");
    // add the jurisdiction bean list
    digester.addSetNext("pages-jurisdictions/page/control", "setJurisdictions");

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Oui c'est possible il existe surement plusieurs solutions :

    * utiliser la méthode peek qui permet de lire de dernier élément de la stack sans le dépiler, mais je ne suis pas sûr que ce soit très "propre" ni facile à maintenir.
    * utiliser une fatory pour ton élément que tu dois stocker dans 2 listes, et laisser à la factory le soin de se charger des 2 listes.

    Il y a surement d'autres solutions, surement meilleures, mais comme ça se sont les deux premières qui me viennent à l'esprit. Avis aux experts

    Jacques Desmazières

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Merci jacques, je vais étudier cela.
    Mais je navigue dans le brouillard. Si j'ai bien compris je construis les deux listes que j'envoie à la factory qui saura initialiser mon objet "PageBean" ?

    Merci,

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Pas tout à fait (enfin qi j'ai compris) : tu associes une factory à ton niveau "pages-jurisdictions/page" et c'est celle-ci qui génère tes 2 listes. A toi de voir comment tu récupères ces listes pour les remettre dans ta structure Java, mais Digester est assez souple pour faire cela, il suffit de comprendre comment ça marche (ce n'est pas toujours simple !)

    Jacques Desmazières

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Merci encore jacques, ca va etre sympa

Discussions similaires

  1. [C#] Parser du XML
    Par karl3i dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/02/2009, 09h46
  2. [DOM] Parser un XML
    Par Zapan dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 02/12/2005, 11h41
  3. [DOM XML] Comment parser du XML avec une version 4.3 ?
    Par ouioui2000 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 18/10/2005, 15h52
  4. [FLASH MX2004] Parser un XML en action script
    Par jejeman dans le forum Flash
    Réponses: 6
    Dernier message: 20/09/2005, 17h25
  5. [XSL] Parser fichier xml : erreurs + incompréhensions
    Par totobouchon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/07/2005, 15h47

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