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 :

Parcours total d'un fichier XML [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 actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Par défaut Parcours total d'un fichier XML
    Bonjour,
    Je veux parcourir un fichier XML en utilisant JDOM. Ce que j'ai constaté est que le parcours se fait en spécifiant l’élément. Je cherche comment je peux faire un parcours total du document mais JDOM ne fournit pas une méthode pour cela. Donc je sais que je dois créer ma propre méthode mais le problème que je ne suis pas bien en java. La vérité que je suis débutante en java
    Pouvez-vous m'aidez s'il vous plait

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    En quoi les méthodes getChildren() / getAttributes() ne te permettent pas de parcourir tout le document?

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Par défaut
    Bonjour,
    oui malheureusement je trouve que chaque fois je suis obligé d'indiquer un élément spécifique pour utiliser ces deux méthodes.
    par exemple je trouve ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    static void afficheALL()
    {
    List listEtudiants = racine.getChildren("etudiant");
    Iterator i = listEtudiants.iterator();
    while(i.hasNext())
    {
    Element courant = (Element)i.next();
    System.out.println(courant.getChild("nom").getText());
    }
    }
    je dois positionné dans l'élément étudiant pour afficher leurs noms.
    le fichier XML que j'ai construis est composé de plusieurs éléments donc c'est pas logique de ce positionné chaque fois a un élément spécifique.
    je veux parcourir le fichier total avec un test sur ces éléments. par exemple si l’élément correspond a un étudiant je le met dans un tableau étudiant et si l'élément correspond a un professeur je le met dans un tableau professeur. les tableaux sont les sorties de mon programme
    donc le fichier est composé par <etudiant>, <professeur>, <administration>
    j’espère que l'idée est claire maintenant
    merci pour votre aide

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List enfants = racine.getChildren();
    Comme ej l'ai dit, tu n'as pas besoin de préciser l'enfant que tu chercher....

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List enfants = racine.getChildren();
    Comme ej l'ai dit, tu n'as pas besoin de préciser l'enfant que tu chercher....
    Merci,
    Oui je sais que cette commande permet de récupérer tous éléments de racine. Mais le problème c'est que chaque élément possède des sous éléments aussi. De plus je besoin d'une méthode qui permet de tester si l’élément correspond à un étudiant ou bien à un professeur.
    Voici un extrait du fichier XML.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <personne>
    <etudiant>
    <nom> Ahlem</nom>
    <prenom>Rhayem</prenom>
    </etudiant>
    <professeur>
    <nom> XXXXXX</nom>
    <prenom>YYYYY</prenom>
    </professeur>
    <administration>
    <responsable>ZZZZ</responsable>
    </administration>
    </personne>
    Le code du test est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (racine.getChildren()=="etudiant")
    system.out.printlen("c'est un etudiant");
    else if (racine.getChildren()=="professeur")
    system.out.printlen("c'est un professeur");
    else 
    system.out.printlen("c'est un administrateur");
    Malheureusement ça marche pas avec moi l'erreur est que n'est pas logique de comparer un élément avec une chaîne de caractère.
    S’il vous plait je besoin de votre aide. Dites-moi comment je peux faire ce test.
    J’espère que vous me comprend maintenant
    Merci beaucoup

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Par défaut
    Presque ça. sauf que == pour une chaîne de caractère # de equals :

    pour simplifier, == vaut VRAI si les 2 objets sont les mêmes, et equals() vaut VRAI si les 2 objets ont un contenu équivalent.

    En gros pour allez un peu plus loin en java quand tu utilise le == on va allez voir si les 2 objets ont la même références (dans le même emplacement de mémoire) En gros == compare la référence sur l'objet pas le contenu.

    Tu peux testé un truc bateau genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String obj1 = new String("xyz");
     
    String obj2 = new String("xyz");
     
    if(obj1 == obj2)
       System.out.println("obj1==obj2 plop");
    else
      System.out.println("obj1==obj2 pas plop");
    Tu verra tu aurra toujours pas plop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (racine.getChildren()=="etudiant")
    system.out.printlen("c'est un etudiant");
    else if (racine.getChildren()=="professeur")
    system.out.printlen("c'est un professeur");
    else 
    system.out.printlen("c'est un administrateur");


    Donc ton code :



    if(racine.getChildren().equals("etudiant")){
    ...
    }

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ouais, enfin, faut un peu réfléchir à ce que tu fais aussi et pas mettre les bout de code au hasard. Dis toi que ton JDom c'est un arbre hein. JDom te fournis des méthodes pour savoir ce qu'il y a à chaque niveau, quels sont les enfants, etc. Après, à toi d'en faire quelque chose d'utile. Là t'es occupé de comparer un cageot de pommes avec une poire .


    Première chose. On ne fais JAMAIS de == avec des String, on utilise equals()

    Ensuite, getChildren, il te renvoie pas "Etudiant", il te renvoie une java.util.List. Et cette java.util.List d'objets de type Element. A toi donc de la pacourir. Enfin, chacun de ces Element, possède un méthode bien à propos appelée "getName()" qui permet de savoir quel était le nom du tag. Nom que tu pourra comparer à ton "etudiant" avec equals et prendre une décision en conséquence.

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

Discussions similaires

  1. [DOM] problème lors du parcours du fichier xml
    Par krfa1 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/05/2007, 07h24
  2. [DOM] Besoin d'optimiser le parcours d'un fichier XML
    Par stardeus dans le forum Format d'échange (XML, JSON...)
    Réponses: 19
    Dernier message: 08/04/2007, 17h04
  3. Réponses: 1
    Dernier message: 15/08/2006, 01h35
  4. Parcours fichier xml
    Par Christophe Charron dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/05/2006, 20h37

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