C'est l'un de ces problèmes qui sonne comme ça va être facile à commencer w mais, plus vous creusez, plus vous trouvez de profondeur dans l'espace du problème.
Il existe un certain nombre d'outils pré-existants qui feront des diffs xml - à la fois dans une interface graphique (dans le même esprit que les outils de diff textuels), et pilotés par la ligne de commande. d être après). XMLDiff est un tel cas, comme cela a déjà été mentionné. Les problèmes commencent lorsque vous posez des questions telles que: que dois-je produire? Voulez-vous juste un code de retour qui dit si elles sont identiques ou différentes (à des fins de test unitaire, cela peut être suffisant) - ou voulez-vous un rapport qui vous indique quelles sont les différences? (pourrait également être utile pour les tests unitaires si vous voulez trouver quel est le problème)? Si ce dernier, comment voulez-vous cette information? Voulez-vous modifier la distance? Voulez-vous interpréter les valeurs numériques et vous dire la différence entre elles?
Qu'en est-il de la commande des nœuds? Est-ce que les nœuds enfants doivent être dans un ordre particulier - ou s'il s'agit des mêmes nœuds mais dans un ordre différent, est-ce correct?
Vous voudrez probablement aussi spécifier ce que vous souhaitez comparer. Les espaces de noms doivent-ils correspondre? L'espace est-il significatif n'importe où? Y a-t-il certains nœuds que vous voulez toujours ignorer (par exemple un attribut "temps"), ou voulez-vous un contrôle plus fin sur quels nœuds sont comparés et lesquels ne le sont pas?
Pour les comparaisons numériques, voulez-vous tenir compte des tolérances? Pour les comparaisons textuelles (nœuds de texte), l'espace dans est-il significatif? Qu'en est-il de la capitalisation?
Et vous pouvez continuer encore et encore (comme je l'ai fait dans une analyse pour un tel projet où je travaille récemment). Chaque outil aborde ces problèmes à différents degrés et de différentes manières.
Vous pouvez décider de le garder aussi simple que possible et opter pour quelque chose qui effectue une comparaison directe, nœud par noeud, sans interprétation - et à la fin, vous dire si elles sont identiques ou différentes. Je crois que xmldiff vous donnera cela (et un peu plus). Si vous voulez gérer des cas tels que des ordres de nœuds différents ou ignorer certaines branches, vous pouvez appliquer une transformation xslt à votre document de test avant la comparaison, pour le normaliser en fonction de vos règles.
Même question [ici] (http://stackoverflow.com/questions/167946/how-would-you-compare-two-xml-documents). –