Confronto XML: trovare le differenze tra due file XML

Incolla due documenti XML per vedere, nodo per nodo, i tag, gli attributi e i testi aggiunti, eliminati o modificati tra le due versioni.

Confrontare due file XML: abbinamento dei nodi e lettura

Il confronto legge i due documenti con il parser XML del browser, poi confronta gli alberi nodo per nodo: nome del tag, attributi (in qualsiasi ordine) e testo diretto di ogni elemento. Gli elementi che hanno un attributo id vengono abbinati tramite quell'identificatore, gli altri in base alla posizione. Ogni nodo risulta aggiunto, rimosso, modificato o invariato.

Come lo strumento abbina gli elementi

I due testi devono innanzitutto essere XML ben formati: altrimenti lo strumento mostra un errore di analisi e non confronta nulla. Poi, per ogni elemento:

  • i figli che hanno un attributo id vengono abbinati in base al valore di quell'id, anche se l'ordine è cambiato;
  • i figli senza id vengono abbinati in base alla posizione (il 1º con il 1º, il 2º con il 2º);
  • un elemento è «modificato» se un attributo è aggiunto, rimosso o cambiato, o se il suo testo diretto è diverso. Il testo viene ripulito dagli spazi: l'indentazione e gli a capo non contano.

Esempio con i file dimostrativi

Versione 1: radice con version = 1.0, un blocco settings in cui theme vale dark, due user (id 1 Alice, id 2 Bob con il ruolo Admin). Versione 2: version = 1.1, theme vale light, un tag notifications in più, Bob diventa SuperAdmin e compare uno user id 3 (Charlie). Risultato: 3 nodi modificati (la radice per il suo attributo, theme, role di Bob), 4 nodi aggiunti (notifications, user 3 e i suoi due figli) e 3 rimossi (user 1 con name ed email). Lo user 2 resta invariato in sé ma contiene una modifica.

Limiti da conoscere

  • Se due elementi nella stessa posizione non hanno lo stesso nome di tag, o hanno id diversi, quello nuovo è segnato come modificato e tutti i suoi figli come aggiunti; i vecchi figli non sono elencati come rimossi.
  • Vengono letti solo i nodi di testo: sezioni CDATA, commenti e istruzioni di elaborazione non sono confrontati. Il prefisso del namespace fa parte del nome confrontato.
  • In un elenco senza id, un elemento inserito in testa sposta tutti i successivi, che risultano modificati. La vista codice, un diff riga per riga dell'editor Monaco, aiuta allora a leggere la modifica.

In modalità diretta, il confronto riparte 0,8 secondi dopo l'ultima battuta. L'albero comprime i rami senza modifiche e i file caricati vengono letti nel browser, senza invio.

Domande frequenti

L'ordine degli attributi o l'indentazione contano come differenza?

No. Gli attributi vengono confrontati come un insieme, dopo aver ordinato i loro nomi, e il testo di ogni elemento viene ripulito dagli spazi: l'indentazione e gli a capo tra i tag sono ignorati. Al contrario, un valore di attributo che cambia, anche di un solo carattere, segna l'elemento come modificato.

Come confrontare un elenco di elementi il cui ordine è cambiato?

Dai a ogni elemento un attributo chiamato esattamente id: lo strumento li abbina allora tramite l'identificatore, qualunque sia la loro posizione. Senza id, l'abbinamento avviene per posizione, e un elemento inserito in testa fa apparire tutti i successivi come modificati. Altri nomi di attributo (key, ref, code) non vengono usati per l'abbinamento.

Perché lo strumento mostra «Errore di analisi XML»?

Almeno uno dei due documenti non è ben formato: tag non chiuso, carattere & senza escape, più elementi radice o dichiarazione mal posizionata. Finché i due testi non superano il parser del browser, non parte alcun confronto. Il pulsante di formattazione qui non aiuta, perché non corregge la sintassi.

Le sezioni CDATA e i commenti vengono confrontati?

Non nella vista ad albero: legge solo i nodi di testo diretti di ogni elemento, oltre agli attributi. Una modifica limitata a un commento o a una sezione CDATA non vi compare. La vista codice, che confronta il testo grezzo riga per riga, la mostra.

Lo strumento è davvero gratuito?

Sì, tutti gli strumenti di Kristools sono gratuiti al 100% e accessibili senza registrazione.

I miei dati sono protetti?

Sì. Tutte le elaborazioni vengono eseguite direttamente e in modo sicuro nel tuo browser. Nessun dato personale viene inviato ai nostri server.