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

XML/XSL et SOAP Discussion :

Outils sur les différences entre deux fichiers XML


Sujet :

XML/XSL et SOAP

  1. #1
    Community Manager

    Profil pro
    Inscrit en
    Avril 2014
    Messages
    4 207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2014
    Messages : 4 207
    Points : 13 060
    Points
    13 060
    Par défaut Outils sur les différences entre deux fichiers XML
    je recherche actuellement des outils permettant de générer un fichier "delta" qui référencient toutes les différences entre 2 fichiers XML.

    J'ai trouvé plusieurs outils, propriétaire ou Open Source, mais il est difficile de se faire un rapide aperçu de leurs possibilités...

    Peut-etre que certains d'entre vous ont déjà utilisé ce type d'outil et peuvent m'éclairer à ce sujet.

    Merci
    Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    c'est un domaine assez ardu, faisant encore l'objet de recherches. Ce document te fait un panel (hélas en anglais) des algorithmes disponibles et de certaines implémentations : http://www.deltaxml.com/pdf/is2004.pdf.

    J'ai testé personnellement VMTools, qui semble fonctionner correctement, mais qui ne convient pas à toutes les applications, notamment la comparaison de gros fichiers (> 1 Mo).
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 85
    Points
    85
    Par défaut
    Effectivement ça semble assez ardu comme domaine, j'ai lu pas mal de doc provenant de thèses ou mémoires...

    merci pour le lien

    est-ce que quelqu'un utilise ou a testé DeltaXML ou Versim?

  4. #4
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 85
    Points
    85
    Par défaut
    J'ai trouvé un outil Open Source JXyDiff qui est une version en java de XyDiff et qui après quelques ptits tests semble bien fonctionner, je laisse donc le lien pour ceux que ça intéresse :

    http://potiron.loria.fr/projects/jxydiff

    Cet outils prend en compte 7 opérations différentes :

    - suppression d'un noeud
    - ajout d'un noeud
    - mise à jour d'un noeud
    - déplacement d'un noeud
    - suppression d'un attribut
    - ajout d'un attribut
    - mise à jour d'un attribut

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    une classe microsoft xmlDiff (en .NET) est dispo gratuitement sur le net...maintenant il faut l implémenter et personnelement je n ai strictement rien compris à la doc fournie

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Des liens vers d autres outils sont disponibles à cette URL
    http://potiron.loria.fr/projects/jxydiff/related
    Afin de faire évoluer cette version de JXyDiff j aurai besoin que vous me laissiez vos commentaires sur JXyDiff sur le forum
    http://potiron.loria.fr/projects/jxydiff/forum
    et rapport de bugs sur
    http://potiron.loria.fr/projects/jxydiff/bugtracker

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par tanix57
    Afin de faire évoluer cette version de JXyDiff j aurai besoin que vous me laissiez vos commentaires sur JXyDiff sur le forum
    http://potiron.loria.fr/projects/jxydiff/forum
    il n'est pas possible de laisser de message sur le forum, les droits d'accés sont insuffisants, même en se créant un compte, voici le message retourné:
    Insufficient permissions

    You have not the required [Forum: POST] permission at URI /projects/jxydiff/forum/8d2bc0c57f00000101a3fd86356ccd59



  8. #8
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 85
    Points
    85
    Par défaut
    Comme le forum de JXyDiff n'est pas accessible, je pose mes remarques sur cet outil ici, ça peut servir à d'autres :

    Parmi les différents outils de différenciation entre fichiers XML, c'est l'outil qui semble le plus intéressant de ceux que j'ai testés.

    DeltaXML semble également un outil très intéressant mais il a les inconvénients d'être propriétaire et son format de sortie (le "delta" qui représente les différences) ne correspondait pas vraiment à ce que je recherchais...

    Les autres outils que j'ai testé était largement moins intéressant pour les raisons suivantes :

    - pas intégrable dans une application (ce que je souhaite faire)
    - pas ou trop peu de documentation, de mises à jour, etc.
    - limitation sur la taille des fichiers
    - certains projets ont l'air à l'abandon

    Mon choix se porte donc sur JXyDiff car c'est celui qui semble le plus abouti par rapport aux autres (avec DeltaXML). Cependant quelques options pourraient être apportées afin d'améliorer cet excellent outil :

    - pouvoir spécifier si l'ordre des éléments enfants est important (gestion des "move" très couteuse, et donc très surperflu lorsque garder l'ordre des noeuds n'est pas nécessaire (ce qui est mon cas))

    - pouvoir ignorer les commentaires, les whitespaces, les namespaces, etc.

    Il ne me semble pas que ces options soient implémentées, tanix pourra peut-etre nous en dire plus...

  9. #9
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Le seul outil que j'ai trouvé apte à comparer dans des temps raisonnables de gros fichiers XML (> 7 Mo) complexes est XMLDiff de alphaWorks (IBM).

    Les seuls défauts que je lui ai trouvés :
    • Moins efficace en terme de détection des modifications (le delta n'est pas minimum)
    • Le delta n'est pas un format XML valide (mais est facilement retraitable pour l'être, avec des expressions régulières)
    • Pas de l'Open Source, licence d'utilisation restreinte
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  10. #10
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par GrandFather
    Les seuls défauts que je lui ai trouvés :
    J'en ajouterai un, très génant celui-là, la version console de l'outil a des bugs que n'a pas la version GUI...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  11. #11
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 126
    Points : 73
    Points
    73
    Par défaut
    Beyond compare 2
    Gère la comparaison, fusion manuelle de deux fichiers, quelque soit le format (je dis ca car je compare aussi bien des fichier vb6 que des xml avec).

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut JXyDiff
    En ce qui concerne les fonctionnalités éventuelles voici les remarques que j'aurai à faire:
    - Ignorer commentaire, whitespace, etc en fait l'application comporte son propre parser. Par conséquent il suffit de modifier le fichier de grammaire XML nommé xml.g de le recompiler et on a la possibilité d'ignorer par exemple les withespace ou autre chose. En fait ces propriétés sont gérés car on m avait demandé de traiter la grammaire compléte. Mais l'avantage d'avoir son propre parser dans cette version Java, et que l on peut imaginer par exemple une tout autre grammaire d'un autre langage et calculer également les différences. Finalement on pourrai l'étendre à d autres langage que le XML l important est la représentation arbrescente.

    - Effectivement l'opération MOVe peut être couteuse mais elle est très utile, dans la version C++, il y avait une optimisation pour pouvoir éviter certaines phases et de ce fait la rendre plus rapide. J avais repris cette optimisation puis finalement retirer. Mon avis est plutot que de choisir entre MOVE ou pas MOVE, il faudrait intégrer cette fonctionnalité pour optimiser l opération.

  13. #13
    GentooGeek
    Invité(e)
    Par défaut
    Si je puis me permettre mes deux sous de commentaires, je dirais que, pour moi, la solution du pauvre (avec des outils Open Source uniquement) serait de
    1. Formater les fichiers XML (pretty-print)
    2. Comparer avec diff en mode texte.
    Bien sûr cette méthode a quelques inconvénients, par exemple lorsqu'un noeud est inséré dans l'arbre de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <root>
        <node1/>
    </root>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <root>
        <node2>
            <node1/>
        </node2>
    </root>
    Avec un diff texte, les espaces supplémentaires de node1 feront augmenter la taille du fichier résultat. Mais diff a une option pour ignorer les différences dans le nombre d'espaces (option -b ou --ignore-space-changes). Car, après tout, XML c'est du texte.

    Bien sûr on n'a pas un diff optimisé pour XML mais c'est mieux que rien. De plus, s'il est possible de formater chaque ligne (pour les éléments de type texte par exemple) pour qu'elle ne dépasse pas un certain nombre de caractères (et ça, c'est possible avec les outils GNU), on peut aussi limiter la taille des diff, par exemple, en ce qui concerne les BLOB ou bien les blocs de texte long.

    Il faudra, bien entendu, pour qu'un fichier patch puisse être utilisé, travailler sur les versions formatées de fichiers XML, par sur leur version d'origine.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 7
    Points
    7
    Par défaut et .NET
    bon alors en gros on peut dire qu'il y en a 2 qui sont utilisable pour des gros fichiers (500Mo) : xmldiff du Framework .NET et DeltaXML (java)
    Jxydiff étant le produit d'une recherche universitaire et placé sur un site non entretenu

    xmldiff du framework .NET semble très intéressant , mais est-ce-que ça marche pour de gros volume ?

    DeltaXML vient de me répondre qu'ils faisait dans leur environnement 400Mo en 5 minutes,...

    qu'en pensez vous ?

    Comparaison de fichiers XML

    Microsoft .NET Framework XMLDiff class (http://msdn.microsoft.com/library/de...ml/xmldiff.asp)
    open Source
    Class développée en .NET (.NET Framework 1.1 )
    dernière mise à jour : 2002

    exemple d’utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XmlDiff.Compare( XmlReader original, XmlReader compareWith,bool isFragment, XmlTextWriter diffOutput).
     
    XmlDiff.Options = XmlDiffOptions.IgnorePI |XmlDiffOptions.IgnoreChildOrder;

    Delta XML Core ( http://deltaxml.com )
    peut être intégré dans une application java
    ils sont réactifs
    tests sur de gros fichiers (400Mb = environ 5 minutes)
    http://www.deltaxml.com/dxml/library...#dsy68_metrics

    --------------------------------------------------------------------------------------------

    JXyDiff (http://potiron.loria.fr/projects/jxydiff)
    OpenSource / écrit en Java / parser XML intégré
    dernière mise à jour : 02/2006 (site peut réactif)
    exemple d’utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -jar jxydiff.jar test1.xml test2.xml delta.xml


    XML Diff d’IBM (http://www.alphaworks.ibm.com/tech/xmldiffmerge)
    dernière mise à jour : 2001

    Python xmldiff (http://www.logilab.org/projects/xmldiff/)
    version 0.6.3 année : 2003

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 7
    Points
    7
    Par défaut Microsoft xmldiff
    Et bien xmldiff de microsoft marche très bien !

    XML Notepad 2006 l'utilise pour comparer des fichiers xml
    (ici : http://www.microsoft.com/france/msdn...epad-2006.mspx)


    View compare XML files

    maintenant comment faire pour créer un fichier xml de 500Mo ?

  16. #16
    GentooGeek
    Invité(e)
    Par défaut
    Citation Envoyé par Philos15
    ...
    maintenant comment faire pour créer un fichier xml de 500Mo ?
    C'est une hérésie que de vouloir créer des fichiers XML de cette taille... Si c'est pour obtenir de tels volumes, XML est-il vraiment le choix le plus subtil?...

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 7
    Points
    7
    Par défaut
    il s'agit de flux en mode batch transmis entre le front et le bck office d'une grande compagnie : des tonnes d'infos transitent tous les soirs et doivent être incorporées dans le Back

    Ils ont comme souvent deux environements , un de prob et un de pré prod pour vérifier que la modifications et évolutions de front ne font pas régresser le flux :

    il faut donc comparer chaque jour les flux qui arrivent en préprod de ceux arrivant en prod pour vérifier qu'il n'y a pas d'écart et donc ça implique la comparaison de fichiers xml très volumineux (il y a aussi des fichiers txt et csv,... )

    voilà,...

  18. #18
    GentooGeek
    Invité(e)
    Par défaut
    Disons que XML est approprié aux transferts de données entre deux plateformes et que XML est intéressant pour l'humain car il peut en lire le contenu. Etant donné des flux de cette taille, la lisibilité n'a plus d'intérêt - la relecture d'un tel volume prendrait... un temps considérable; de plus si cela se produit chaque soir...

    La lisibilité n'étant plus un critère de premier choix, tout se limite maintenant, bien que je ne connaisse pas les détails de cette mise en oeuvre, à comparer des volumes de données, qui pourraient tout aussi bien être compactés, d'où un trafic binaire (c-à-d réduit) plutôt que texte (volumineux).

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut erreur d'execution avec jxydiff
    Bonjour,
    j'essaye d'utiliser jxydiff pour comparer 2 de fichiers, et voici l'erreur que j'obtiens :
    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
     
    E:\webvpn\jxydiff>java -jar jxydiff.jar Abonneobs.xml Abonneobs2.xml toto.xml
    Exception in thread "main" java.lang.UnsupportedClassVersionError: fr/loria/ecoo/so6/xml/xydiff/Main
     (Unsupported major.minor version 48.0)
            at java.lang.ClassLoader.defineClass0(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    quelqu'un peut il m'aider ?
    merci d'avance !
    Pascale38

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    J'en ai fais un en Perl : Ligne de commande : ici

Discussions similaires

  1. extraire les différences entre deux fichiers xml en python
    Par princessita dans le forum Général Python
    Réponses: 4
    Dernier message: 17/02/2014, 01h09
  2. Réponses: 9
    Dernier message: 12/07/2011, 18h25
  3. Réponses: 4
    Dernier message: 16/04/2008, 12h12
  4. lister les différences entre 2 fichiers XML
    Par st20085 dans le forum Général Python
    Réponses: 1
    Dernier message: 14/12/2007, 12h48
  5. Différence entre deux fichiers
    Par Celelibi dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2006, 18h36

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