Trier les fichiers XML afin que les différences puissent ensuite être trouvées

J'ai besoin de comparer deux fichiers XML, chacun mesurant environ 13 000 lignes.

Malheureusement, le code qui génère ces fichiers ne génère pas les données dans le même ordre à chaque fois (les données proviennent d'une base de données).

Par conséquent, j'obtiens des faux positifs lors de l'utilisation d'un utilitaire de diff ligne par ligne standard (WinMerge), même après que ait canonisé le fichier XML .

Comme exemple de mon problème :

Fichier 1:

<a>
  <b key="fruit.preferred">banana</b>
  <b key="fruit.available">pineapple</b>
  <b key="fruit.available">apple</b>
  <b key="fruit.available">orange</b>
</a>

Fichier 2:

<a>
  <b key="fruit.available">pineapple</b>
  <b key="fruit.preferred">banana</b>
  <b key="fruit.available">apple</b>
  <b key="fruit.available">orange</b>
</a>

Ces fichiers ont le même contenu, mais la position de la ligne banane signifie qu'ils sont considérés comme différents par diff traditionnel. Existe-t-il des outils qui peuvent effectuer un tri de sorte que les fichiers soient considérés comme identiques?

Au fait, les structures de fichiers XML sont plus compliquées que les exemples ci-dessus!

demandé sur