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 :

Diminuer les éléments répétés dans un document 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 confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 88
    Par défaut Diminuer les éléments répétés dans un document XML
    Bonjour,

    J'aimerais diminuer les éléments répétés dans mon documents XML, pour cela dans un premier temps j'ai écrit le code suivant (en langage java avec Jdom) :
    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
     
    static void ReduceRepaet(Element element)
     {
        try{
           if(element.getChildren().isEmpty()==false)
            {
            List liste = element.getChildren();
            Iterator it = liste.iterator();
     
                    Element fils =(Element)it.next();    
     
                   while(it.hasNext()){
            System.out.println(fils.getName());
     
              while(it.hasNext())
                {
     
                  Element fi =(Element)it.next();
     
                  System.out.println(fi.getName());
     
                  if( fils.getName().equals(fi.getName()))
                { 
                     System.out.println("oui");
                     fils.addContent(fi.removeContent());
                     fi.detach();
                     ReduceRepaet(element);
                 } 
                   else{System.out.println("non");}
     
                }
           } 
          }    
           }catch (Exception e){}    
    }
    Mais ce code me permet seulement de comparer le premier élément fils avec ses éléments frères et ne continu pas à comparer par exemple le deuxième élément avec les autres éléments ainsi de suite.

    Donc comment puis-je modifier mon code pour résoudre ce problème ?

    Merci d'avance pour votre aide.

  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
    En mettant tous les noms dans un Set<String>.
    Si le nom n'y était pas, très bien, il est ajouté.
    Si le nom y était déjà, alors il ne faut pas garder l'élément.

    Note #1 : tu ne peux pas faire detach() sur les éléments en même temps que tu les parcours avec un Iterator issu de getChildren(). Ça va faire un ConcurrentModificationException.
    Il faut faire it.remove().

    Note #2 : ton appelle récursif ne change pas de paramètre récursif : tu réappelles la méthode avec le même paramètre avec lequel elle a été appelée. Ça devrait faire un dépassement de pile assez souvent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 88
    Par défaut
    Merci thelvin pour ton aide, j’essayerai d'appliquer ta proposition et je te dit si elle marche ou non. La vérité j'ai pas pensé d'utiliser "set" parce que je suis débutante dans la programmation de java et Jdom.

  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
    JDOM n'a rien à voir là-dedans, ce n'est que de l'algorithmique, avec Java donc.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 88
    Par défaut
    Quand j'utilise "set" je peux vérifier seulement si l'élément est répété ou non,
    mais le problème réside quand je dois supprimer l'élément répété car ses fils doivent devenir des fils de l'élément équivalent à son nom (l'élément répété).

    Donc comment puis-je faire ?

  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
    Dans ce cas, une Map<String, Element> au lieu d'un Set<String>. Comme ça tu retiens, les noms qui sont déjà là, et l'élément correspondant à ce nom.
    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. Réponses: 5
    Dernier message: 03/11/2006, 18h38
  2. Convertir les tags HTML en entités avant l'ajout dans un document XML et vice versa
    Par JavaEli dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 26/09/2006, 11h36
  3. Sauver un TStream dans un document XML
    Par srvremi dans le forum Composants VCL
    Réponses: 4
    Dernier message: 07/10/2004, 13h17
  4. recherche dans un document xml via DOM
    Par ndoye_zaff dans le forum APIs
    Réponses: 5
    Dernier message: 11/06/2003, 14h44
  5. Stocker du texte mis en forme dans un document XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/02/2003, 10h23

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