Existe-t-il des outils gratuits Xml Diff / Merge disponibles? [fermé]

105

J'ai plusieurs fichiers de configuration dans mes applications .net que je voudrais fusionner des éléments de paramètres d'application, etc.

J'étais sur le point de commencer à le faire manuellement comme je le fais habituellement, mais je pensais qu'il devait y avoir un outil d'interface graphique XML diff disponible quelque part.

L'outil serait capable d'aller au niveau de l'élément pour comparer et afficher les différences, etc.

Cependant, Google n'a donné aucun résultat substantiel d'outil gratuit et aucun indice pour quoi que ce soit de valeur.

Un tel outil est-il disponible? C'est très utile? Gratuitement?

Merci d'avance. :)

Éditer:

Voici un peu de clarification de la fonctionnalité qui transformerait mon travail manuel fastidieux et sujet aux erreurs en une tâche plus simple d'une minute (et potentiellement automatisée):

Dans KDiff3, vous pouvez effectuer une comparaison / fusion de répertoires entiers. Il existe un différentiel hiérarchique très précis, convivial et clair. Je voulais trouver une solution similaire, mais au lieu de la hiérarchie des répertoires, une hiérarchie d'éléments XML.

S'il n'y a pas de tel logiciel open source, j'envisage d'en créer un sur CodePlex pour fournir cette fonctionnalité.

Russell
la source

Réponses:

11

KDiff3 n'est pas spécifique à XML, mais il est gratuit. Il fait un bon travail de comparaison et de fusion de fichiers texte.

epotter
la source
3
Je suis d'accord que j'utilise KDiff3 pour le moment, mais un outil spécifiquement pour XML qui pourrait descendre au niveau de l'élément serait formidable.
Russell
2
Je pensais dans cette perspective: la façon dont KDiff fait un diff hiérarchique de répertoires, un diff hiérarchique d'éléments pourrait également fonctionner. Donc, si un élément a changé, alors je suis d'accord, les éléments parents doivent également être signalés comme ayant changé.
Russell
25
tout le monde se rend compte que dans xml, les nœuds enfants ne sont pas garantis d'être dans un ordre spécifique, donc tout "outil" qui signalait que quelque chose n'était pas dans le même ordre d'un fichier à l'autre ne sera vraiment pas un véritable outil compatible xml
7
Si l'ordre change, les éléments sont différents. Selon la sémantique du document XML en question, l'ordre peut ou non être significatif. Par exemple, en XHTML, l'ordre est évidemment important.
George Lund
7
Le fait est qu'un outil de comparaison standard fonctionne en fonction des lignes. Il existe des outils de différence spécifiques pour les fichiers CSV, par exemple, qui comprennent le format dans lequel ils diffèrent. Mieux cette compréhension est meilleure, plus la différence peut se produire. Un bon outil de diff XML serait capable d'analyser le XML, d'utiliser un schéma pour déterminer des contraintes telles que si l'ordre est important, par exemple, puis d'utiliser ces connaissances pour offrir une expérience de diff / fusion beaucoup plus efficace.
Stijn de Witt
32

Jetez un œil aux outils de comparaison de fichiers , à partir desquels j'utilise WinMerge . Il a la capacité de comparer des documents XML (vous pouvez activer le DisplayXMLFilespréfiltre).

DisplayXMLFiles.dll - Ce plugin imprime joliment les fichiers XML en insérant des tabulations et des sauts de ligne. Ceci est utile pour les fichiers XML qui n'ont pas de retours de ligne dans des emplacements pratiques.

WinMerge en action

Voir aussi mon tableau de comparaison des fonctionnalités .

dma_k
la source
6
+1 Winmerge version 2.12.4.0; Menu "Plugin" -> "Liste" -> cochez "Activer les plugins"; Menu "Plugin" -> cochez "Déballage automatique". Testé avec un fichier XML avec un nom de fichier avec l'extension .xml et il semble fonctionner.
Alessandro Jacopson le
10
Cela ne gère pas bien les attributs dans des ordres différents, donc son utilité peut être limitée, en fonction de votre situation.
Michael Kohne
Utilisez d'abord cette transformation sur tous les fichiers XML pour trier les éléments et les attributs: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid
1
On dirait que le plugin n'est plus disponible.
Fernando Gonzalez Sanchez
Je ne sais pas pourquoi ce n'est pas dans le programme d'installation, mais j'ai pu l'obtenir à partir de leur dépôt src sur bitbucket / code source (sourceforge DL): bitbucket.org/winmerge/winmerge/src/…
aCodeMonkey
21

J'ai écrit et publié une application Windows qui résout spécifiquement le problème de la comparaison et de la fusion de fichiers XML.

Projet: Merge peut effectuer des comparaisons et des fusions à deux et trois voies de n'importe quel fichier XML (où deux des fichiers sont considérés comme des révisions indépendantes d'un fichier de base commun). Vous pouvez lui demander d'identifier les éléments dans les fichiers d'entrée par des valeurs d'attribut ou le contenu des éléments enfants, entre autres.

Il est entièrement contrôlable via la ligne de commande et peut également générer des rapports texte contenant les différences entre les fichiers.

Projet: fusion de trois fichiers XML

UuDdLrLrSs
la source
Salut @James Merci pour l'info. Évidemment, ce serait bien s'il était gratuit, mais il fournit des fonctionnalités très intéressantes - et votre exemple ci-dessus est un classique expliquant pourquoi cet outil est si utile! Merci pour votre message. :)
Russell
J'ai essayé Project :: Merge et malheureusement, il n'a pas été en mesure de faire face à ma tâche. J'ai du texte HTML dans paras ( <p>) qui est un formatage supplémentaire (comme <i>, <em>). Donc Project :: Merge montre que le para complet a été changé, il ne fait pas d'analyse de mots en profondeur.
dma_k
Oui, je suis désolé de dire que le support XHTML (il ne fera jamais le HTML hérité) est assez limité à cet égard, tout comme la différenciation de texte dans les blocs XML en général. Jusqu'à présent, la plupart des travaux se sont concentrés sur les fichiers XML de style configuration où les données de caractères de forme libre sont limitées dans leur étendue et leur utilisation. J'espère que j'améliorerai Project: Merge dans ce domaine dans une prochaine version.
2
-1, le PO a posé une question sur le logiciel libre. Project Merge est un logiciel d'essai et n'a pas non plus été mis à jour depuis 3 ans.
yourbuddypal
3
Projet: Merge a été remplacé par Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade
15

Il existe quelques outils de comparaison et de fusion XML basés sur Java répertoriés ici:

Diff XML Open Source écrit en Java

Liens ajoutés:

Chris Fulstow
la source
2
J'ai du mal à trouver des liens vers le logiciel dans le lien que vous avez mentionné.
Russell
Ouais moi aussi! Il faudra peut-être un peu de Google sur Google ...
Chris Fulstow
3

J'utilise TortoiseMerge, qui est inclus dans le programme TortoiseSVN

Et nous avons parlé des outils File Diff dans ce fil, mais pas dédiés au XML

/programming/1830962/file-differencing-software-on-windows

TU
la source
1
Merci S.Mark, comme je l'ai mentionné à epotter, j'utilise déjà KDiff3 pour les diffs de fichiers généraux, mais je préférerais vraiment un utilitaire de diff spécifique XML s'il est disponible (sinon, je vais en démarrer un open-source :))
Russell
>> (if not, I will start up an open-source one :)Wow, merveilleux! attendra avec impatience, veuillez déposer le lien quelque part ici Si cela commence.
VOUS
3

Bien que ce ne soit pas un outil graphique, mes tests rapides ont indiqué que diffxml était prometteur. L'auteur semble avoir réfléchi à la complexité de la représentation des différences pour les éléments imbriqués de manière standardisée (sa spécification DUL - Delta Update Language).

En installant et en exécutant ses outils, je peux dire que la sortie de texte brut est assez claire et concise. Il n'offre pas le même degré d'appréhension immédiate qu'un outil GUI, mais étant donné que la sortie est standardisée en DUL, vous seriez peut-être en mesure de prendre cela et de créer un outil pour générer une représentation visuelle. J'adorerais certainement en voir un.

La section «liens» de l'auteur fait référence à quelques autres outils de différenciation XML, mais comme vous l'avez mentionné dans votre article, ils sont tous propriétaires.

Jarret Hardie
la source
4
Mon expérience est la suivante: il ne peut pas du tout gérer la réorganisation des éléments, ce qui est attendu dans un outil XML (en option, car parfois l'ordre est important), et au lieu de différences minimales, il affiche des éléments entièrement modifiés. . Fondamentalement, le fichier diff est juste un tout nouveau fichier XML s'il y a des changements de formatage majeurs sans grands changements sémantiques.
SilverbackNet
3

L'outil Pretty Diff a été créé avec XML à l'esprit. Assurez-vous simplement de cliquer sur l'option "balisage".

http://prettydiff.com/

Austincheney
la source
Mais c'est un outil en ligne, non? Comment puis-je appliquer des modifications de gauche à droite ou fusionner?
dma_k
Vous devez également modifier les options de tri, sinon cela signale les éléments XML comme modifiés quand tout ce qu'ils ont fait était de déplacer (l'ordre n'a pas d'importance dans XML donc cela ne devrait pas apparaître comme un changement). Cependant, il ne trie toujours pas les sections imbriquées en fonction de leur contenu, de sorte que vous verrez toujours des ajouts et des suppressions de gros blocs XML lorsque tout ce qui s'est passé était l'ordre des éléments, il n'est donc pas possible d'obtenir une différence fine.
Malvineous
2

A7Soft fournit des outils de comparaison XML freeware et shareware:

http://www.a7soft.com

Andrew Lapick
la source
0

Il s'agit d'un moteur de comparaison pour les développeurs java, mais il est livré avec une interface de démonstration - vous pourrez peut-être l'utiliser: https://community.emc.com/docs/DOC-5042

AP.
la source
0

Je vous recommande d'utiliser l' outil CodeCompare . Il prend en charge la mise en évidence native des données XML et peut être une bonne solution pour votre tâche.

JackD
la source