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 :

Parsage : comment boucler sur les enfants d'un noeud ? [JDOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Par défaut Parsage : comment boucler sur les enfants d'un noeud ?
    Bonjour,

    j'aurais besoin de votre aide pour un parsage en xml. Je dispose d'un xml bidon pour faire simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <MonXML>
         <Collection>
              <Livre>
                   <Titre>Livre</Titre>
                        <Page>
                             <Paragraphe>Paragraphe 1</Paragraphe>
                             <Paragraphe>Paragraphe 2</Paragraphe>
                        </Page>
                   <Auteur>Ixxe EMELE</Auteur>
              </Livre>
         </Collection>
    </MonXML>
    Mon but est de parser ce xml en JAVA à l'aide de JDOM. Pour le moment j'arrive à récupérer les valeurs des premiers élements tel que Titre ou Auteur, mais je n'arrive pas à boucler sur l'élement Page et récupérer les valeurs des paragraphe...

    Un exemple du code que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Map<String, String> parametres = new HashMap<String, String>();
    NodeList childNodes = parentElement.getChildNodes();
     
    for (int j = 0; j < childNodes.getLength(); j++) 
    {		Node item = childNodes.item(j);
    	parametres.put(item.getNodeName(), item.getFirstChild().getNodeValue());
    }
    Dans ce cas la, si je boucle sur mon xml actuel, je récupère le Titre et l'Auteur dans ma HashMap, ce qui donnera par exemple key: Titre, value: Livre (seon le principe de la HashMap).

    Comment faire pour que, quand j'arrive sur l'élement Page, je puisse boucler sur les enfants de clui-ci ?

    Merci d'avance

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    On peut modifier ton code pour que tu boucle sur les fils Page, mais si tu y arrives, que ferais-tu derrière?

    Si tu range les valeurs de ses fils de la même manière, tu n'auras qu'une seule des deux valeurs pour Paragraphe, puisque la 2e écrasera la première.

    Il faut commencer par revoir le besoin exact je pense.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Par défaut
    Mon besoin étant simplement de récupérer toutes valeurs que ce soit, et ce, quelque soit le nombre d'enfant qu'aura chaque élément.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Par défaut
    Avec ma méthode pour le moment, je stock tout dans uen HashMap. Il me récupère Titre et sa valeur, quand il passe à Page, il me récupère comme valeur \n\t\t\t\t. En plus de ca, il me récupère Auteur et sa valeur en l'écrasant sur Titre la ca va plus !

  5. #5
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Peux-tu détailler le résultat que tu souhaites obtenir à la fin?

    Si tu utilises une Map<String, String> avec comme clé le nom de la balise, tu vas perdre des informations, car tu n'a pas unicité des balises.

    Il faut réfléchir à une autre structure de données ou à un système de clé plus complet.
    Si tu n'as pas trop d'idées, tu peux nous dire ce que tu veux faire des résultats.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Par défaut
    Je veux simplement récupérer et stocker les résultats, avec la possibilité d'utiliser ces données plus tard.

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

Discussions similaires

  1. [Toutes versions] Recherche comment boucler sur les boites emails ?
    Par Gerard_tlse dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 23/04/2015, 20h27
  2. [XL-2003] Comment boucler sur les tableaux page web
    Par Maxgad dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 30/01/2013, 11h37
  3. [XSLT 1.0] Comment boucler sur les infos d'un élément précis
    Par Janko dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 18/06/2012, 13h45
  4. [VB.NET] Boucler sur les checkbox de mon formulaire
    Par malhivertman1 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/08/2006, 10h51
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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