Это на самом деле довольно сложная проблема (из-за того, что «разница» означает часто находиться в глазу наблюдателя здесь, так как будет семантически «эквивалентная» информация, которую вы, вероятно, не хотите отмечать как различия).
Вы можете попробовать использовать xmldiff , который основан на работе в документе Обнаружение изменений в иерархически структурированной информации .