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 :

Récupérer un élément [DOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut Récupérer un élément
    Bonjour,
    je vous écrit car j'ai un souci lors de la récupération d'un élément.

    Donc j'ai un fichier XML de ce genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <DocDC>
    <title>titre1</title>
    <title>titre2</title>
    <subject>sujet</subject>
    ...
    </DocDC>
    Ensuite voilà mon code JAVA:
    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
    //Récupération des informations Titres de DocDC
           NodeList nlDocDC = racine.getElementsByTagName("DocDC");
           for (int i = 0; i < nlDocDC.getLength(); ++i)
           {
        	   System.out.println("    Title:");
        	   NodeList nlTitre = DocDC.getElementsByTagName("title");
        	   for ( int j = 0; j < nlTitre.getLength(); j++)
        	   {
        		   Element titre = (Element) nlTitre.item(j);
        		   if (titre.getNodeName().equals("title"))
        		   {
        			   NodeList nlTitre2 = DocDC.getElementsByTagName("title");
        			   Element titre1 = (Element) nlTitre2.item(j);
        			   System.out.println("         -"+titre1.getNodeValue());
        		   }
        	   }
           }
    Mon problème est que je récupère la valeur null et je ne comprend pas pourquoi.

    Surtout que quand j'utilise ce code:
    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
    //Récupération des informations du Noeud DocDC
           System.out.println("Informations de DocDC:");
           System.out.println("");
           //Récupération des informations Titres de DocDC
           NodeList nlDocDC = racine.getElementsByTagName("DocDC");
           for (int i = 0; i < nlDocDC.getLength(); ++i)
           {
              Element titre = (Element) nlDocDC.item(i);
       NodeList Node = titre.getElementsByTagName("title");
     
       Element titreFr = (Element) Node.item(1);
       Element titreEn = (Element) Node.item(0);
       System.out.println("    Title:");
       System.out.println("         -"+titreEn.getFirstChild().getNodeValue());
       System.out.println("         -"+titreFr.getFirstChild().getNodeValue());
           }
    Et là j'obtiens bien titre1 titre2
    Seulement je ne peux pas garder ce code car les éléments title de mes fichiers XML varient en fonction du fichier.

    Si vous pouviez m'aider à résoudre mon problème j'en serais ravi.

    Merci

  2. #2
    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 est bien inutilement compliqué, ton premier code -_-°.

    Bref, un nœud élément n'a pas de valeur, c'est pour ça qu'appeler getNodeValue() dessus renvoie null.
    Par contre, appeler getNodeValue() sur un nœud texte renvoie le contenu de ce nœud texte.

    Donc, pour obtenir le contenu du nœud texte d'un élément genre <title>titre1</title>, il va falloir faire du getFirstChild().getNodeValue()

    Conseil : c'est beaucoup plus simple de manipuler du XML avec JDOM qu'avec le DOM fourni par la bibliothèque Java de base. Je recommande de prendre la bibliothèque JDOM et ses dépendances, et d'utiliser ça à la place.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    En effet j'avais rajouté une NodeList inutile dans mon if mais c'est juste que j'avais oublié de l'enlever sinon ben je ne vois pas où il est compliqué. En tout cas j'ai pas trouvé plus simple pour faire ce que je voulais.

    Sinon en effet le getFirstChild().getNodeValue() était la solution. Je pensais que ça ne s'appliquait que si l'on avait affaire à un Noeud dont on voulait récupérer un élément.

    Sinon le JDOM j'ai essayé avant cela mais j'avais des souci d'accessibilité à cause des Namespace donc je me suis tourné vers DOM où le problème ne se pose pas.

    En tout cas merci beaucoup.

  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
    Citation Envoyé par loukad Voir le message
    En effet j'avais rajouté une NodeList inutile dans mon if mais c'est juste que j'avais oublié de l'enlever sinon ben je ne vois pas où il est compliqué. En tout cas j'ai pas trouvé plus simple pour faire ce que je voulais.
    Rigoureusement, absolument, la même chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Récupération des informations Titres de DocDC
    System.out.println("    Title:");
    NodeList nlTitre = DocDC.getElementsByTagName("title");
    for ( int j = 0; j < nlTitre.getLength(); j++)
    {
      Element titre = (Element)nlTitre.item(j);
      System.out.println("         -"+titre.getNodeValue());
    }
    Moi je dis c'est plus simple.

    Sinon le JDOM j'ai essayé avant cela mais j'avais des souci d'accessibilité à cause des Namespace donc je me suis tourné vers DOM où le problème ne se pose pas.
    C'est un peu dommage comme raison de s'écarter de JDOM, mais bon, le but étant de se simplifier la vie, chacun son approche je suppose.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    En effet j'avais fait pas mal de chose inutile dans mon code. ^^

    Sinon pour JDOM disons que comme je suis en stage et qu'il est assez chargé je préfère rechercher l'efficacité. Ce que semble m'apporter DOM.
    Après il n'est pas dis que je me mette à JDOM. Puis étant débutant en JAVA je préfère m'attaquer à un problème à la fois.

    En tout cas merci beaucoup ton aide.
    J'ai plusieurs fois parcouru ce forum et c'est super de voir une communauté prêt à nous aider.

    Bonne journée.

    EDIT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Récupération des informations Titres de DocDC
    System.out.println("    Title:");
    NodeList nlTitre = DocDC.getElementsByTagName("title");
    for ( int j = 0; j < nlTitre.getLength(); j++)
    {
      Element titre = (Element)nlTitre.item(j);
      System.out.println("         -"+titre.getFirstChild().getNodeValue());
    }
    Petit oublie

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

Discussions similaires

  1. Comment récupèrer les éléments d'une JList
    Par Orian dans le forum Composants
    Réponses: 13
    Dernier message: 10/09/2006, 11h53
  2. StrinkTokenizer : récupérer les éléments "vides"
    Par Yannick_from_31 dans le forum Langage
    Réponses: 3
    Dernier message: 21/08/2006, 10h29
  3. Comment récupérer les éléments d'un getComments
    Par AlexandraS dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2006, 11h21
  4. Réponses: 5
    Dernier message: 22/02/2006, 17h32
  5. Comment récupérer les éléments d'un autre programme ?
    Par Henri_13 dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 29/11/2005, 00h16

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