2010-08-05 5 views
10

Je suis à la recherche d'un outil de contrôle de version open source qui peut différencier et fusionner des fichiers XML.Contrôle de version avec diff. XML et fusion

La difficulté que j'ai à trouver un tel outil est que j'ai besoin d'une fusion correcte d'un fichier XML comparant les nœuds et non les lignes.

Une idée? Merci!

+0

Solutions probables: [Outils Xml Diff/Merge gratuits] (http://stackoverflow.com/questions/1871076), [XML Diff and Merge] (http://stackoverflow.com/questions/430001) –

Répondre

2

Quelque chose que j'ai utilisé dans le passé est diffxml. Vous pourriez être en mesure d'utiliser ceci comme votre commande diff pour un VCS comme svn ou git.

6

Malheureusement, il n'existe pas de solution unique à ce problème. XML Diffing est très sensible à ce que vous jugez différent. Dans un cas, l'ordre des nœuds enfants peut être important, et dans un autre cas (peut-être même dans le même fichier), il peut ne pas être pertinent.

Jetez un oeil à XMLUnit. Même s'il vise à tester les unités, il s'agit d'un moteur de différenciation XML complet. Vous devez indiquer (dans le code) comment déterminer que deux nœuds peuvent être comparés, puis que faire de toutes les différences potentielles trouvées (c'est-à-dire, réelles ou non, dans votre application). Il détecte une liste exhaustive des « événements de différence », y compris

  • Attributs pour
  • Nombre d'attributs
  • nœud enfant pour
  • nombre de nœuds enfants
  • implicite vs attribut explicite des valeurs
  • commentaire différences
  • différences de type de document
  • namespac e différences

Et tout un tas plus. N'importe lequel d'entre eux pourrait être important ou sans importance pour votre application, et vous seul pouvez décider. Cela vaut le coup d'oeil, mais il faudra du travail pour obtenir ce que vous voulez.

1

Vous recherchez un outil diff, qui n'est qu'un sous-ensemble de ce qu'est un VCS. Tous les VCS peuvent utiliser un programme externe pour différencier les fichiers. Puisque l'outil de comparaison externe peut être n'importe quoi, il peut aussi s'agir d'un script écrit par vous, qui est conçu pour analyser et comparer deux documents XML.

Je ne sais pas si cela vous permet de trouver plus facilement ce que vous cherchez, mais c'est possible.

-2

Comme d'autres l'ont souligné, vous avez juste besoin d'un bon outil de diff pas le vcs.

Malheureusement, je n'ai entendu parler d'aucun outil de comparaison graphique prenant en charge xml. Donc j'utiliserais un outil de diff normal comme (winmerge ou k3diff) et ensuite je validerais le xml résultant de la fusion en utilisant n'importe quel outil de validation xml que vous aimez.

-1

Il devrait être un outil tout-en-un simple pour les utilisateurs fictifs/paresseux. Les API ou les programmes de console ne correspondent pas. Il semble vraiment que cela n'existe pas dans le monde open-source.

Clearcase peut le faire mais c'est cher. Oxygen peut fusionner mais il n'est pas non plus gratuit.

+1

probablement transformer cela en une section de mise à jour des questions. Ce n'est pas une réponse. – firegurafiku

+0

programme de console est parfait tant qu'il ne prend qu'une commande – Mike76

2

Project: Merge a été conçu pour résoudre ce problème: Comparaison et fusion de fichiers XML via le logiciel SCM. Je crains que ce ne soit pas gratuit non plus, mais c'est nettement moins cher que d'autres outils qui prétendent pouvoir comparer et fusionner XML.

Questions connexes