Este es uno de esos problemas que suena como que va a ser fácil comenzar w ith, pero cuanto más cavas, más profundidad encuentras en el espacio problemático.
Hay una serie de herramientas preexistentes que generarán xml diffs, ambas en forma de GUI (en la misma línea que las herramientas textuales diff) y comandos/componentes de línea de comandos (que son más de lo que ' d be after). XMLDiff es uno de esos casos, como ya se ha mencionado.
Los problemas comienzan cuando hace preguntas como: ¿qué quiero que muestre? ¿Simplemente desea un código de retorno que diga si son iguales o diferentes (para fines de prueba de la unidad esto puede ser suficiente) o desea un informe que le diga cuáles son las diferencias? (¿También podría ser útil para pruebas unitarias si quieres saber cuál es el problema)? Si es este último, ¿cómo quieres esa información? ¿Quieres editar la distancia? ¿Desea que interprete los valores numéricos y le indique la diferencia entre ellos?
¿Qué ocurre con el pedido de nodos? ¿Deben los nodos secundarios estar en un orden particular, o si son los mismos nodos pero en un orden diferente, está bien?
Probablemente también quiera poder especificar qué comparar. ¿Deben coincidir los espacios de nombres? ¿El espacio en blanco es significativo en alguna parte? ¿Hay ciertos nodos que siempre desea ignorar (por ejemplo, un atributo de "tiempo"), o desea un control más preciso sobre exactamente qué nodos se comparan y cuáles no?
Para las comparaciones numéricas, ¿desea tolerar las tolerancias? Para las comparaciones textuales (nodos de texto), ¿es el espacio en blanco dentro de el texto significante? ¿Qué pasa con la capitalización?
Y puede seguir y seguir (como lo he hecho en un análisis para un proyecto de este tipo en el que trabajo recientemente).
Cada herramienta aborda estos problemas en diferentes grados y de diferentes maneras.
Puede optar por mantenerlo lo más simple posible e ir por algo que haga una comparación directa, nodo por nodo, sin interpretación, y al final indique si son iguales o diferentes. Creo que xmldiff te dará eso (y un poco más).
También vale la pena pensar es, si desea manejar casos como diferentes ordenamientos de nodos, o ignorar ciertas ramas, puede aplicar una transformación xslt a su documento de prueba antes de la comparación, para normalizar de acuerdo con sus reglas.
La misma pregunta [aquí] (http://stackoverflow.com/questions/167946/how-would-you-compare-two-xml-documents). –