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
idvengono 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.