Comparador XML: diferencias entre dos archivos XML
Pegue dos XML para ver, nodo a nodo, qué etiquetas, atributos y textos se han añadido, eliminado o cambiado.
Comparar dos archivos XML: emparejamiento de nodos y lectura
El comparador analiza los dos documentos con el parser XML del navegador y compara los árboles nodo a nodo: nombre de etiqueta, atributos (en cualquier orden) y texto directo de cada elemento. Los elementos con un atributo id se emparejan por ese identificador; el resto, por su posición. Cada nodo queda como añadido, eliminado, modificado o sin cambios.
Cómo empareja la herramienta los elementos
Los dos textos deben ser XML bien formados; si no, la herramienta muestra un error de análisis y no compara nada. Después, para cada elemento:
- los hijos con un atributo
idse emparejan por el valor de ese id, aunque haya cambiado su orden; - los hijos sin id se emparejan por posición (el 1.º con el 1.º, el 2.º con el 2.º);
- un elemento está modificado si se añade, elimina o cambia un atributo, o si su texto directo difiere. El texto se recorta: la sangría y los saltos de línea no cuentan.
Ejemplo con los archivos de muestra
Versión 1: raíz con version = 1.0, un bloque settings con theme en dark y dos user (id 1 Alice, id 2 Bob con rol Admin). Versión 2: version = 1.1, theme en light, una etiqueta notifications nueva, Bob pasa a SuperAdmin y aparece un user con id 3 (Charlie). Resultado: 3 nodos modificados (la raíz por su atributo, theme y el rol de Bob), 4 añadidos (notifications, el user 3 y sus dos hijos) y 3 eliminados (el user 1 con name y email). El user 2 no cambia en sí, pero contiene una modificación.
Límites
- Si dos elementos en la misma posición tienen distinto nombre de etiqueta o distinto id, el nuevo se marca como modificado y todos sus hijos como añadidos; los hijos antiguos no aparecen como eliminados.
- Solo se leen los nodos de texto: las secciones CDATA, los comentarios y las instrucciones de procesamiento no se comparan. El prefijo de espacio de nombres forma parte del nombre comparado.
- En una lista sin id, insertar un elemento al principio desplaza todos los siguientes, que aparecen modificados. La vista de código, un diff línea a línea del editor Monaco, ayuda en ese caso.
En modo directo la comparación se repite 0,8 segundos después de la última pulsación. Las ramas sin cambios se pliegan y los archivos cargados se leen en el navegador, sin enviarse.
Preguntas frecuentes
¿El orden de los atributos o la sangría cuentan como diferencia?
No. Los atributos se comparan como un conjunto tras ordenar sus nombres, y el texto de cada elemento se recorta, así que la sangría y los saltos de línea entre etiquetas se ignoran. En cambio, un valor de atributo que cambia, aunque sea en un solo carácter, marca el elemento como modificado.
¿Cómo comparo una lista de elementos cuyo orden ha cambiado?
Dé a cada elemento un atributo llamado exactamente id: la herramienta los empareja entonces por identificador, sea cual sea su posición. Sin id, el emparejamiento es por posición y un elemento insertado al principio hace que todos los siguientes aparezcan modificados. Otros nombres de atributo (key, ref, code) no se usan para emparejar.
¿Por qué aparece un error de análisis XML?
Al menos uno de los dos documentos no está bien formado: una etiqueta sin cerrar, un carácter & sin escapar, varios elementos raíz o una declaración mal situada. Mientras los dos textos no pasen el parser del navegador, no se lanza ninguna comparación. El botón de formato no sirve aquí, porque no corrige la sintaxis.
¿Se comparan las secciones CDATA y los comentarios?
No en la vista de árbol: solo lee los nodos de texto directos de cada elemento y sus atributos. Un cambio limitado a un comentario o a una sección CDATA no aparece ahí. La vista de código, que compara el texto bruto línea a línea, sí lo muestra.
¿La herramienta es realmente gratuita?
Sí, todas las herramientas en Kristools son 100% gratuitas y accesibles sin registro.
¿Están protegidos mis datos?
Sí. Todo el procesamiento se realiza de forma segura y directa en tu navegador. No se envían datos personales a nuestros servidores.