¿Hay herramientas gratuitas de fusión / diferenciación de Xml disponibles? [cerrado]

105

Tengo varios archivos de configuración en mis aplicaciones .net que me gustaría fusionar elementos de configuración de la aplicación, etc.

Estaba a punto de comenzar a hacerlo manualmente como lo hago habitualmente, sin embargo pensé que debe haber una herramienta de interfaz gráfica de usuario de XML diff disponible en alguna parte.

La herramienta podría ir al nivel del elemento para comparar y mostrar las diferencias, etc.

Sin embargo, Google no dio resultados sustanciales de herramientas gratuitas ni pistas de nada de valor.

¿Hay una herramienta de este tipo disponible? ¿Eso es muy útil? ¿Gratis?

Gracias por adelantado. :)

Editar:

Aquí hay un poco de aclaración de la funcionalidad que convertiría mi tedioso trabajo manual, propenso a errores, en una tarea de 1 minuto más simple (y potencial para automatizar):

En KDiff3, puede hacer una diferenciación / fusión de directorios completos. Hay una diferencia jerárquica que es muy precisa, fácil de usar y clara. Sin embargo, estaba interesado en encontrar una solución similar, en lugar de una jerarquía de directorios, una jerarquía de elementos XML.

Si no existe tal software de código abierto, estoy considerando crear uno en CodePlex para proporcionar esta funcionalidad.

Russell
fuente

Respuestas:

11

KDiff3 no es específico de XML, pero es gratuito. Hace un buen trabajo al comparar y fusionar archivos de texto.

epotter
fuente
3
Estoy de acuerdo en que estoy usando KDiff3 en este momento, sin embargo, una herramienta específicamente para XML que podría bajar al nivel de elemento sería excelente.
Russell
2
Estaba pensando desde esta perspectiva: la forma en que KDiff hace una diferencia jerárquica de directorios, una diferencia jerárquica de elementos también podría funcionar. Entonces, si un elemento ha cambiado, estoy de acuerdo, los elementos principales también deben marcarse como si hubieran cambiado.
Russell
25
todos se dan cuenta de que en xml no se garantiza que los nodos secundarios estén en un orden específico, por lo que cualquier "herramienta" que informara que algo no estaba en el mismo orden de un archivo al siguiente realmente no será una herramienta compatible con xml real
7
Si cambia el orden, los elementos son diferentes. Dependiendo de la semántica del documento XML en cuestión, el orden puede ser significativo o no. Por ejemplo, en XHTML obviamente el orden importa.
George Lund
7
El punto es que una herramienta de diferencias normal funciona basada en líneas. Hay herramientas de diferencias específicas para, por ejemplo, archivos CSV que entienden el formato en el que se diferencia. Cuanto mejor sea esa comprensión, más eficaz será la diferenciación. Una buena herramienta de diferencias XML podría analizar el XML, usar un esquema para determinar restricciones como si el orden importa, por ejemplo, y luego usar ese conocimiento para brindar una experiencia de diferenciación / fusión mucho más efectiva.
Stijn de Witt
32

Eche un vistazo a las herramientas de comparación de archivos , desde las que estoy usando WinMerge . Tiene la capacidad de comparar documentos XML (es posible que desee habilitar el DisplayXMLFilesprefiltro).

DisplayXMLFiles.dll : este complemento imprime de forma bonita los archivos XML insertando pestañas y saltos de línea. Esto es útil para archivos XML que no tienen retornos de línea en ubicaciones convenientes.

WinMerge en acción

Consulte también mi tabla de comparación de funciones .

dma_k
fuente
6
+1 Winmerge versión 2.12.4.0; Menú "Complemento" -> "Lista" -> marque "Habilitar complementos"; Menú "Complemento" -> marque "Desembalaje automático". Probado con un archivo XML con nombre de archivo con extensión .xml y parece funcionar.
Alessandro Jacopson
10
No se ocupa bien de que los atributos estén en diferentes órdenes, por lo que su utilidad puede ser limitada, dependiendo de su situación.
Michael Kohne
Use esta transformación en cualquier archivo XML primero para ordenar elementos y atributos: stackoverflow.com/questions/4091085/xslt-to-sort-nodes-by-name
LarryDavid
1
Parece que el complemento ya no está disponible.
Fernando Gonzalez Sanchez
No estoy seguro de por qué no está en el instalador, pero pude obtenerlo de su repositorio src en bitbucket / código fuente (sourceforge DL): bitbucket.org/winmerge/winmerge/src/…
aCodeMonkey
21

Escribí y publiqué una aplicación para Windows que resuelve específicamente el problema de comparar y fusionar archivos XML.

Proyecto: Merge puede realizar comparaciones y fusiones de dos y tres vías de cualquier archivo XML (donde dos de los archivos se consideran revisiones independientes de un archivo base común). Puede indicarle que identifique elementos dentro de los archivos de entrada por valores de atributo o el contenido de elementos secundarios, entre otras cosas.

Es totalmente controlable a través de la línea de comandos y también puede generar informes de texto que contengan las diferencias entre los archivos.

Proyecto: Fusionar fusionando tres archivos XML

UuDdLrLrSs
fuente
Hola @James Gracias por la información. Obviamente, sería bueno si fuera gratis, pero proporciona una funcionalidad muy interesante, ¡y su ejemplo anterior es un clásico de por qué esta herramienta es tan útil! Gracias por tu publicación. :)
Russell
Probé Project :: Merge y desafortunadamente no pude hacer frente a mi tarea. Tengo texto HTML en paras ( <p>) que se agrega formato (como <i>, <em>). Entonces Project :: Merge muestra que se cambió el parámetro completo, no realiza un análisis de palabras en profundidad.
dma_k
Sí, lamento decir que la compatibilidad con XHTML (nunca admitirá HTML heredado) es bastante limitada en ese sentido, al igual que la diferenciación de texto dentro de los bloques XML en general. La mayor parte del trabajo hasta ahora se ha centrado en archivos XML de estilo de configuración donde los datos de caracteres de forma libre son limitados en su extensión y uso. Con suerte, mejoraré Project: Merge en esta área en una versión futura.
2
-1, El OP preguntó sobre el software libre. Project Merge es un software de prueba y tampoco se ha actualizado en 3 años.
yourbuddypal
3
Proyecto: Merge ahora ha sido reemplazado por Oso XML Merge: osocorporation.com/xmlmerge/index.php
leetNightshade
3

Yo uso TortoiseMerge, que está incluido en el programa TortoiseSVN

Y hemos hablado de las herramientas File Diff en este hilo, aunque no están dedicadas a XML

/programming/1830962/file-differencing-software-on-windows


fuente
1
Gracias S. Mark, como mencioné a epotter, ya uso KDiff3 para diferencias de archivos generales, sin embargo, realmente preferiría una utilidad de diferencias específicas de XML si está disponible (si no, iniciaré una de código abierto :))
Russell
>> ¡ (if not, I will start up an open-source one :)Vaya, maravilloso! lo espera, por favor suelte el enlace en algún lugar aquí si comienza.
USTED
3

Si bien esta no es una herramienta GUI, mis pruebas rápidas indicaron que diffxml es prometedor. El autor parece haber pensado en las complejidades de representar diferencias para elementos anidados de una manera estandarizada (su especificación DUL - Delta Update Language).

Al instalar y ejecutar sus herramientas, puedo decir que la salida de texto sin procesar es bastante clara y concisa. No ofrece el mismo grado de aprehensión inmediata que una herramienta GUI, pero dado que la salida está estandarizada como DUL, quizás pueda tomar eso y construir una herramienta para generar una representación visual. Ciertamente me encantaría ver uno.

La sección de "enlaces" del autor hace referencia a algunas otras herramientas de diferenciación XML, pero como mencionaste en tu publicación, todas son propietarias.

Jarret Hardie
fuente
4
Mi experiencia es que: no puede manejar el reordenamiento de elementos en absoluto, que es algo que se esperaría en una herramienta XML (como una opción, porque a veces el orden es importante), y en lugar de diferencias mínimas, muestra elementos modificados completos . Básicamente, el archivo diff es solo un archivo XML completamente nuevo si hay cambios de formato importantes sin grandes cambios semánticos.
SilverbackNet
3

La herramienta Pretty Diff se creó pensando en XML. Solo asegúrese de hacer clic en la opción de "marcado".

http://prettydiff.com/

Austincheney
fuente
Pero esa es una herramienta en línea, ¿verdad? ¿Cómo puedo aplicar cambios de izquierda a derecha o fusionarlos?
dma_k
También debe cambiar las opciones de clasificación; de lo contrario, marca los elementos XML como cambiados cuando todo lo que hicieron fue mover (el orden no importa en XML, por lo que esto no debería aparecer como un cambio). Sin embargo, todavía no ordena las secciones anidadas en función de su contenido, por lo que aún verá adiciones y eliminaciones de bloques XML grandes cuando todo lo que sucedió fue que los elementos cambiaron de orden, por lo que no es posible obtener una diferencia detallada.
Malvineous
0

Te recomiendo que uses la herramienta CodeCompare . Admite el resaltado nativo de datos XML y puede ser una buena solución para su tarea.

JackD
fuente