|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 18 554 ![]() |
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 |
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 541 ![]() |
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 |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
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? |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() |
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 |
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() |
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
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 2 ![]() |
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 |
|
|
00
|
|
|
#7 | |
|
Membre du Club
![]() |
Citation:
Insufficient permissions You have not the required [Forum: POST] permission at URI /projects/jxydiff/forum/8d2bc0c57f00000101a3fd86356ccd59 |
|
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() |
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... |
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 541 ![]() |
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 :
__________________
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 |
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 541 ![]() |
Citation:
__________________
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 |
|
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : août 2005 Messages : 124 ![]() |
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). |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : avril 2006 Messages : 2 ![]() |
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. |
|
|
00
|
|
|
#13 | ||
|
Invité(e)
![]() Messages : n/a ![]() |
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
Code :
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. |
||
00
|
|
|
#14 | ||
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 28 ![]() |
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 :
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 :
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 |
||
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 28 ![]() |
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 ? |
|
|
00
|
|
|
#16 | |
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : octobre 2004 Messages : 28 ![]() |
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à,... |
|
|
00
|
|
|
#18 |
|
Invité(e)
![]() Messages : n/a ![]() |
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). |
00
|
|
|
#19 | ||
|
Nouveau Membre du Club
![]() Inscription : janvier 2003 Messages : 160 ![]() |
Bonjour,
j'essaye d'utiliser jxydiff pour comparer 2 de fichiers, et voici l'erreur que j'obtiens : Code :
merci d'avance ! Pascale38 |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com