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 :

acceder à un element avec Jdom [JDOM]


Sujet :

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

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2009
    Messages : 82
    Par défaut acceder à un element avec Jdom
    bonsoir,

    comment je peut accéder à la texte de l'element <contained>
    dans cette arborecsence avec JDOM ?
    " l'enregistrer dans une variable j veus dire "

    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
    <Sahih-Muslim>
      <Book>
        <Chapter>
          <description>  ici un texte  </description>
          <number-hadith> num </number-hadith>
            <contained>  ici un texte  </contained>
        </Chapter>
      </Book>
      <Book>
        <Chapter>
          <description>  ici un texte  </description>
          <number-hadith> num </number-hadith>
            <contained>  ici un texte  </contained>
        </Chapter>
      </Book>
      <Book>
        <Chapter>
          <description>  ici un texte  </description>
          <number-hadith> num </number-hadith>
            <contained>  ici un texte  </contained>
        </Chapter>
      </Book>
      <Book>
        <Chapter>
          <description>  ici un texte  </description>
          <number-hadith> num </number-hadith>
            <contained>  ici un texte  </contained>
        </Chapter>
      </Book>  
    </sahih-muslim>

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2009
    Messages : 82
    Par défaut
    sa n'est pas faisable

    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
     
    racine = document.getRootElement();    
    List listBooks = racine.getChildren("Book");
     
    Iterator i = listBooks.iterator();
    while (i.hasNext()) {
     
      Element courant = (Element) i.next();
     
      List listChapters = courant.getChildren("Chapter");
      Iterator j = listChapters.iterator();
      while (j.hasNext()) {
      String contained = courant.getChild("contained").getText();
      System.out.println(contained);
      }
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2009
    Messages : 82
    Par défaut
    sayééé merciii


    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
     
    List listBooks = racine.getChildren("Book");
     
    		Iterator i = listBooks.iterator();
    		while (i.hasNext()) {
     
    			Element courantB = (Element) i.next();
     
    			List listChapters = courantB.getChildren("Chapter");
    			Iterator j = listChapters.iterator();
    			while (j.hasNext()) {
     
    				Element courantC = (Element) j.next();
     
    				String contained = courantC.getChild("contained").getText();
    				System.out.println(contained);
    			}
    		}

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(Element book : racine.getChildren("Book")) {
      String contained = book.getChild("Chapter").getChild("contained").getValue();
      System.out.println(contained);
    }
    Autre solution envisageable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(Element containedElt : racine.getDescendants(Filters.element("contained"))) {
      String contained = containedElt.getValue();
      System.out.println(contained);
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2009
    Messages : 82
    Par défaut
    avec mon code il y a un erreur de parsing dans le fichier out.xml
    je veux supprimer de input.xml :
    <contained></contained>

    et la remplacé dans out.xml par :
    <narrateur> </narrateur>
    <contained></contained>



    mais le probleme que dans les <chapitre> qui contient plusieurs <contained> il traite un seul et laisse les autre en + je veux que les balise a remplacé prendre la place de <contained> supprimer
    Fichiers attachés Fichiers attachés

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il n'y a pas de solution immédiate, parce que JDOM ne propose pas de méthode pour ajouter un nœud devant un nœud donné.

    À mon avis la solution la plus simple serait :
    - déterminer la liste des éléments <contained>
    - dissocier cette liste de la structure du Document.
    J'explique : on ne peut pas à la fois itérer sur une structure et y ajouter et supprimer des éléments, ça casse la cohérence. La List sur laquelle nous allons itérer pour s'occuper des <contained>, doit être une autre List que celle dans laquelle on va supprimer/insérer des éléments.
    - pour chaque <contained>,
    -- déterminer sa position dans le <Chapter>
    -- enlever ce contained, basé sur sa position
    -- insérer le <narrateur> à cette position
    -- insérer le nouveau <contained> à la position+1

    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
    // new ArrayList pour dissocier la List du document
    List<Element> containedList = new ArrayList<Element>(chapter.getChildren("contained"));
     
    for(Element contained : containedList) {
      // récupérer le texte
      String text = contained.getValue();
      String textNarrator = "...";
      String textContained = "...";
     
      // faire les modifs
      int index = chapter.indexOf(contained);
      chapter.removeContent(index);
      Element narrator = new Element("narrator");
      narrator.setText(textNarrator);
      chapter.addContent(index, narrator);
      Element newContained = new Element("contained");
      newContained.setText(textContained);
      chapter.addContent(index + 1, newContained);
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] Ajouter Element dynamiquement avec JDOM
    Par Eausport dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 10/07/2012, 15h13
  2. [JDOM] Comment parser un child d'un root element avec org.jdom ?
    Par Battosaiii dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 10/10/2011, 09h20
  3. [JDOM] Parser avec JDOM
    Par GLDavid dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 11/08/2004, 22h40
  4. [JAR]Probleme compilation avec jdom
    Par ronaldgis dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 04/08/2004, 11h31

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