web-dev-qa-db-fra.com

Outil ou bibliothèque pour comparer des fichiers xml

Je recherche un outil de comparaison XML qui comprend xml. Il ne peut pas s'agir d'une comparaison ligne par ligne comme WinMerge ou Beyond Compare.

Une solution idéale serait celle qui affiche les modifications de la même manière que Word 2007 affiche les modifications de suivi. DeltaXML le fait, mais n'est pas livré avec une véritable interface graphique `` prête à l'emploi '' et coûte 500 $ par utilisateur !:

ExamXml fonctionne hors de la boîte mais affiche les différences d'une manière déroutante. Il n'a pas de concept d'avant et d'après, il montre juste les différences:

alt text
(source: a7soft.com )

L'outil doit avoir le concept d'utiliser des attributs comme clé, de sorte qu'il ne pense pas qu'une liste réorganisée d'éléments a changé. DeltaXML fait cela mais je n'ai pas réussi à le configurer correctement pour la capture d'écran.


MISE À JOUR:

Jusqu'à présent ExamlXML est la meilleure solution prête à l'emploi. Mais il manque les concepts de gestion du changement de DeltaXML. Il en résulte des problèmes d'utilisabilité.

DeltaXML est à peu près la solution dont j'ai besoin, mais quelque chose avec plus de fonctionnalités hors de la boîte serait mieux. DeltaXML nécessite l'écriture de Java code pour appeler l'API, ainsi que l'écriture de XSL pour transformer le xml en entrée attendue.

41
joe

Si je comprends votre problème, vous avez probablement une application qui utilise des fichiers XML comme stockage de données et l'interface graphique résume les noms de balises "techniques" en étiquettes "conviviales" - encore une fois, je suppose. Ce serait donc une extension naturelle de voir les différences d'une manière similaire. Je suppose également que votre application n'a pas de fonction de diff qui suit le concept d '"abstraction".

J'ai fait quelques recherches et j'ai trouvé une application ( ExamXML ) qui semble se rapprocher des fonctionnalités de mise en évidence. J'ai téléchargé la version eval et testé vos fichiers par rapport à elle:

http://www.programmedintheusa.com/images/stack547399.png

Cela fait un très bon travail de mise en évidence des différences. Cela semble assez interactif et apparaît avec le nombre de différences. Il semble que vous puissiez changer les couleurs qu'il utilise, alors vous pouvez peut-être utiliser des gris et des blancs pour désaccentuer les balises. Il semble également avoir de nombreuses options que vous pouvez prédéfinir pour vos utilisateurs.

Je tiens à noter que vous aurez du mal à trouver un outil de comparaison XML qui n'affichera pas les noms de balises, car les balises sont ce qui donne le contexte du contenu. Si vous supprimez le contexte, il devient difficile de comprendre les données affichées. Quoi qu'il en soit, cet outil pourrait peut-être être utile. Avez-vous également essayé de montrer à vos utilisateurs certains de ces outils et voir ce qu'ils sont prêts à tolérer, parfois ils peuvent vous surprendre. J'espère que cela t'aides!

14
John Virgolino

Je suis très surpris que personne n'ait mentionné Microsoft XML NotePad

C'est gratuit et cela peut créer une assez bonne comparaison, indiquant quels éléments/attributs ont été modifiés, déplacés, supprimés, etc.:

(Désolé si les captures d'écran sont un peu larges).

Vous pouvez également appliquer des XLS au fichier XML et effectuer diverses opérations d'édition. Ça vaut le coup d'essayer.

17
Sylverdrag

DiffMerge de SourceGear est gratuit pour un seul utilisateur:

http://www.sourcegear.com/diffmerge/

5
Mike L

Je pourrais essayer DeltaXML + une transformation XSLT pour obtenir le résultat spécifique que vous souhaitez. Un problème lié à l'utilisation d'outils de comparaison de texte brut avec XML est que la forme physique d'un document XML (son indentation, etc.) peut changer même si le contenu lui-même ne le fait pas, ce qui peut conduire à de nombreux faux positifs. DeltaXML est un très bon outil pour comparer le XML basé sur des documents.

En outre, en fonction de l'éditeur utilisé par vos utilisateurs, la différenciation XML peut être intégrée. Par exemple, Arbortext Editor a un bon outil qui affiche le texte (pas les balises) avec les modifications mises en évidence/barrées.

3
James Sulak

Altova diffDog XML Spy et diffDog sont des outils exceptionnels. Retirez-les de mes mains mortes et froides, un peu.

3
jmcecil

Beyond Compare est excellent comme @BobbyShaftoe l'a déjà mentionné. Pour fusionner cependant, j'aime utiliser Araxis Merge . Nous l'utilisons assez souvent à des fins similaires.

En ce qui concerne votre commentaire sur la capacité non technique de vos utilisateurs:

Merci pour les réponses ... Mais tout cela semble trop technique. Mes utilisateurs ne voient normalement pas les balises xml car leur outil de création XML les résume. Existe-t-il des outils qui affichent des différences dans le contenu du texte, mais qui n'affichent pas (ou ne désaccentuent pas) les balises xml.

Je vais jeter ceci là-bas: vos utilisateurs devraient apprendre. Si vous les faites fusionner et modifier des fichiers XML - je suppose potentiellement pour la tenue de registres ou la configuration de l'application - alors ils devraient avoir au moins une compréhension rudimentaire de ce qu'ils font. Ils n'ont pas besoin d'être des whizzes XML pour utiliser les outils répertoriés et faire le travail.

Si, cependant, il est impossible d'exiger de vos utilisateurs qu'ils aient une connaissance rudimentaire du travail qu'ils font, je vous suggère d'écrire vous-même un utilitaire de configuration et de le fournir à vos utilisateurs finaux, plutôt que de compter sur un logiciel tiers.

2
Matt Jordan

Essayez le bloc-notes XML de Microsoft MSDN XML il a un fichier XML de comparaison. Aucune idée à quel point c'est bon.

1
Aussie Craig

Avez-vous essayé examdiff ? Bien sûr, c'est toujours un outil technologique, mais il est facile de travailler avec. Il dispose d'une interface glisser-déposer pour comparer les fichiers.

0
Christophe Herreman

Vous pouvez trouver L'outil XML Diff and Patch GUI (exemple de code sur MSDN) répond un peu mieux à vos besoins: il affiche toujours les balises, mais souligne la différence de texte. Depuis que vous obtenez le code, pour un peu plus d'effort, vous pouvez l'adapter plus précisément à vos besoins.

Bien que l'exemple soit relativement âgé (juillet 2004, et a ses racines en 2002), il est mis à niveau sans douleur vers Visual Studio Express C # 2008. Ne soyez pas découragé lors du téléchargement de exemple à partir du site MSDN si/quand le programme d'installation MSI mentionne "SQLXML Bulkload in .NET Code Sample" - ce n'est pas le cas!

0
Dan Blanchard

J'utilise toujours kdiff3. Il est facile à utiliser et peut comparer jusqu'à 3 fichiers. http://kdiff3.sourceforge.net/

0
mspoerr

Je sais que c'est un fil ancien, mais Project: Merge est une nouvelle application Windows qui peut gérer des fusions et des comparaisons bidirectionnelles et tripartites de fichiers XML. (Une opération à trois voies suppose que deux fichiers sont tous deux dérivés d'un fichier de base commun.)

Vous devrez peut-être lui dire comment identifier les éléments individuels pour fonctionner parfaitement sur vos fichiers, mais c'est assez facile à faire et vous n'aurez besoin de le faire qu'une seule fois.

0
user420442

Soit par programme, soit par interface utilisateur, vous pouvez utiliser XmlDiff, les outils XmlPatch et la bibliothèque de MSDN. Pour plus de détails sur son fonctionnement, consultez le guide.

http://msdn.Microsoft.com/en-us/library/aa302294.aspx

0
Ray Lu

Oxygen XML Editor a le meilleur outil de diff XML de collection que j'ai trouvé. Il existe plusieurs algorithmes différents à comparer, donc si la valeur par défaut ne fonctionne pas pour vous, essayez Syntax Aware ou certains des autres algorithmes (maintenant, j'utilise la version 8 et je n'ai pas mis à niveau vers la version 10 donc ymmv, mais je doute que le diff XML a empiré).

0
Kris Erickson