Duas abordagens que uso são (a) canonizar os arquivos XML e, em seguida, comparar suas serializações e (b) usar a função deep-equal () do XPath 2.0. Ambas as abordagens são aceitáveis para dizer se os arquivos são os mesmos, mas não são muito bons em dizer onde eles diferem.
Uma ferramenta comercial especializada neste problema é o DeltaXML.
Se você tem coisas que considera equivalentes, mas que não são equivalentes no nível XML - por exemplo, elementos em uma ordem diferente -, talvez seja necessário estar preparado para fazer uma transformação para normalizar os documentos antes da comparação.