textos texto sublime online lĂ­nea lineas gratis entre encontrar diferencias comparar codigo archivos .net xml

texto - La mejor forma de comparar 2 documentos XML en.NET



comparar dos lineas de codigo (2)

Microsoft ofrece sus herramientas / clases XML Diff aquí . No lo he usado personalmente, pero parece que lo ayudará a comenzar:

"Al usar la clase XMLDiff, el programador puede determinar si los dos archivos son de hecho diferentes en función de las condiciones que son importantes para su aplicación"

Parece hacer frente a diferentes pedidos, espacios, prefijos de espacio de nombres, etc.

Tengo un montón de pruebas unitarias que necesitan verificar las salidas XML.

Empecé comparando cadenas, pero esto no va a escalar ya que el formateo y las diferencias superficiales se interponen.

¿Cuál es la forma más fácil en .NET para evaluar si el XML generado es semánticamente el mismo que espera la prueba?

Cerrado como duplicado de ¿Cómo compararía dos documentos XML?


Este es uno de esos problemas que parece fácil de empezar, pero cuanto más cavas, más profundidad encuentras en el espacio problemático.

Hay una serie de herramientas preexistentes que harán diferencias xml, tanto en forma de interfaz gráfica de usuario (en la misma línea que las herramientas de diferencia de texto), como en componentes / línea de comando (que son más de lo que se busca) . XMLDiff es uno de esos casos, como ya se ha mencionado.

Los problemas comienzan cuando haces 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 valores numéricos y le diga la diferencia entre ellos?

¿Qué pasa 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 detallado sobre exactamente qué nodos se comparan y cuáles no?

Para las comparaciones numéricas, ¿desea permitir tolerancias? Para las comparaciones textuales (nodos de texto), ¿es significativo el espacio en blanco dentro del texto? ¿Qué pasa con la capitalización?

Y puede seguir y seguir (como lo hice 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 decidir 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 le dirá si son iguales o diferentes. Creo que xmldiff te dará eso (y un poco más).

También vale la pena pensar si, 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 normalizarlo de acuerdo con sus reglas.