У меня была эта проблема, и я написал свою собственную, потому что мне нужно было знать, в чем разница [1]. Если вам удастся просто узнать, идентичны ли ожидаемый и фактический XML, то самое простое - канонизировать XML в строку и преобразовать строки.
Канонизация является частью спецификации XML-инструментария и создает строку, которая не зависит от порядка атрибутов, типа цитирования, нормализации CDATA и т. Д.
Все хорошие парсеры XML должны иметь это. Я использую XOM (http://www.xom.nu) (Java), который имеет канонизатор и прост в использовании.
[1] Мой XML содержал представления действительных чисел, которые могут немного отличаться из-за ошибок округления. Простое лексическое сравнение не работает (x = "1.99999994" и x = "2" не являются лексически идентичными, но могут быть равны в пределах данного эпсилона).