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 :

Comparaison de deux fichiers XML


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut Comparaison de deux fichiers XML
    Bonjour à tous,

    après une longue recherche je n'ai pas vraiment trouvé mon bonheur.
    Je cherche à programmer une fonction permettant de comparer deux fichiers XML quelconque. La fonction retournerait faux si ils sont différents et vrai si ils sont identiques.

    Au départ je pensais que ce n'était pas très dur, mais plus j'avance et plus je me dit le contraire. En effet premièrement je ne connais pas la structure du fichier, donc le nombre d'enfants, de petits enfants etc. Ensuite les deux fichiers n'ont pas forcemment la même structure.

    J'ai commencé à coder ça mais je ne sais pas du tout comment avancer maintenant. Si vous avez une idée je suis preneur Merci beaucoup

    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
    public static boolean compareXmlFiles(File file1, File file2){
    		boolean res = false;
    		SAXBuilder sxb = new SAXBuilder();
    	    try
    	    {
     
    	       Document document1 = sxb.build(file1);
    	       Document document2 = sxb.build(file2);
    	       Element racine1 = document1.getRootElement();
    	       Element racine2 = document2.getRootElement();
    	       List listChildren1 = racine1.getChildren();
    	       List listChildren2 = racine2.getChildren();
    	       if (listChildren1.size()!=listChildren2.size()){
    	    	   res = false;
    	       }
    	       else{
    	    	   res = true;
    	    	   java.util.Iterator i = listChildren1.iterator();
    	    	   java.util.Iterator j = listChildren2.iterator();
    		       while (i.hasNext()){
    		    	   Element courant1 = (Element)i.next();
    		    	   System.out.println(courant1.getName());
    		    	   Element courant2 = (Element)j.next();
    		    	   System.out.println(courant2.getName());
    		    	   if (!courant1.equals(courant2)){ //Je ne sais pas trop comment faire pour savoir si c'est identiques ou pas
    		    		   res = false;
    		    	   }
    		       }
    	       }  
    	    }
    	    catch(Exception e){}
    	    return res;
    	}

  2. #2
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    Ce sont des XML de quelle taille? Quelle est la structure?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut
    Justement, cela dépend les fichiers. J'aimerais pouvoir comparer n'importe quels fichiers

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu devrais faire une méthode récursive qui prend deux nœuds en paramètres. La méthode vérifie l'égalité des différents attributs puis boucle sur chaque fils en s'appelant elle-même.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut
    J'y ai pensé en effet, cela me semble la seule solution possible... Il va falloir que je m'y mette mais en attendant je suis passé à autre chose car ça me soulé

    Merci pour ton aide en tout cas

  6. #6
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    Citation Envoyé par Leniouns Voir le message
    Ensuite les deux fichiers n'ont pas forcemment la même structure.
    Si les fichiers n'ont pas la même structure cette solution risque fort de ne pas marcher. Enfin sauf si tu attends faux dans ce cas là.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Par défaut
    En effet si les deux fichiers n'ont pas la même structure alors j'attends "faux".

    Cependant j'ai une question. Je passe en paramètres des "File". Mais si je fais en récursive, je récupère donc les enfants de la racine par exemple. Comment puis-je le passer en paramaètre ?

    Merci de votre aide.

Discussions similaires

  1. Outils sur les différences entre deux fichiers XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 19
    Dernier message: 21/07/2008, 15h21
  2. Réponses: 4
    Dernier message: 07/09/2007, 12h12
  3. [JDOM] Comparer deux fichiers XML en Java
    Par calimero2611 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/06/2006, 11h19
  4. [XML] Convertir fichier XLS en deux fichiers XML
    Par Kornoman dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/03/2006, 15h30
  5. [langage] Comparaison de deux fichiers
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 16h05

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