Сортировка XML-файлов, чтобы затем можно было найти различия

Мне нужно сравнить два XML-файла, каждый из которых имеет длину около 13 000 строк.

К сожалению, код, который генерирует эти файлы, не генерирует данные в одном и том же порядке каждый раз (данные поступают из базы данных).

Поэтому я получаю ложные срабатывания при использовании стандартной утилиты построчного различия (WinMerge), даже после канонизации XML-файла.

В качестве примера моего проблема:

Файл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>

Файл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>

Эти файлы имеют одинаковое содержимое, но положение банановой линии означает, что они считаются разными по традиционному различию. Существуют ли какие-либо инструменты, которые могут выполнять сортировку таким образом, чтобы файлы считались одинаковыми?

Кстати, структуры XML-файлов сложнее, чем в приведенных выше примерах!