Comparateur XML : différences entre deux fichiers XML
Collez deux XML pour voir, nœud par nœud, les balises, attributs et textes ajoutés, supprimés ou modifiés.
Comparer deux fichiers XML : appariement des nœuds et lecture
Le comparateur lit les deux documents avec le parseur XML du navigateur, puis compare les arbres nœud par nœud : nom de balise, attributs (quel que soit leur ordre) et texte direct de chaque élément. Les éléments qui portent un attribut id sont appariés par cet identifiant, les autres par leur rang. Chaque nœud ressort ajouté, supprimé, modifié ou inchangé.
Comment l'outil apparie les éléments
Les deux textes doivent d'abord être des XML bien formés : sinon l'outil affiche une erreur d'analyse et ne compare rien. Ensuite, pour chaque élément :
- les enfants qui ont un attribut
idsont rapprochés par la valeur de cet id, même si leur ordre a changé ; - les enfants sans id sont rapprochés par rang (le 1er avec le 1er, le 2e avec le 2e) ;
- un élément est « modifié » si un attribut est ajouté, retiré ou changé, ou si son texte direct diffère. Le texte est rogné : l'indentation et les retours à la ligne ne comptent pas.
Exemple avec les fichiers de démonstration
Version 1 : racine avec version = 1.0, un bloc settings où theme vaut dark, deux user (id 1 Alice, id 2 Bob avec le rôle Admin). Version 2 : version = 1.1, theme vaut light, une balise notifications en plus, Bob passe SuperAdmin et un user id 3 (Charlie) apparaît. Résultat : 3 nœuds modifiés (la racine pour son attribut, theme, role de Bob), 4 nœuds ajoutés (notifications, user 3 et ses deux enfants) et 3 supprimés (user 1 avec name et email). Le user 2 reste inchangé lui-même mais contient une modification.
Limites à connaître
- Si deux éléments de même rang n'ont pas le même nom de balise, ou des id différents, le nouveau est marqué modifié et tous ses enfants ajoutés ; les anciens enfants ne sont pas listés comme supprimés.
- Seuls les nœuds texte sont lus : sections CDATA, commentaires et instructions de traitement ne sont pas comparés. Le préfixe d'espace de noms fait partie du nom comparé.
- Dans une liste sans id, un élément inséré en tête décale tous les suivants, qui apparaissent modifiés. La vue code, un diff ligne à ligne de l'éditeur Monaco, aide alors à lire le changement.
En mode direct, la comparaison se relance 0,8 seconde après la dernière frappe. L'arbre replie les branches sans changement, et les fichiers chargés sont lus dans le navigateur, sans envoi.
Questions fréquentes
L'ordre des attributs ou l'indentation compte-t-il comme une différence ?
Non. Les attributs sont comparés comme un ensemble, après tri de leurs noms, et le texte de chaque élément est rogné : l'indentation et les retours à la ligne entre balises sont ignorés. En revanche, une valeur d'attribut qui change, même d'un seul caractère, marque l'élément comme modifié.
Comment comparer une liste d'éléments dont l'ordre a changé ?
Donnez à chaque élément un attribut nommé exactement id : l'outil les apparie alors par identifiant, quelle que soit leur position. Sans id, l'appariement se fait par rang, et un élément inséré en tête fait apparaître tous les suivants comme modifiés. D'autres noms d'attribut (key, ref, code) ne sont pas utilisés pour l'appariement.
Pourquoi l'outil affiche-t-il « Erreur d'analyse XML » ?
Au moins un des deux documents n'est pas bien formé : balise non fermée, caractère & non échappé, plusieurs éléments racine ou déclaration mal placée. Tant que les deux textes ne passent pas le parseur du navigateur, aucune comparaison n'est lancée. Le bouton de formatage n'aide pas ici, car il ne corrige pas la syntaxe.
Les sections CDATA et les commentaires sont-ils comparés ?
Pas dans la vue arborescente : elle ne lit que les nœuds texte directs de chaque élément, ainsi que les attributs. Une modification limitée à un commentaire ou à une section CDATA n'y apparaît pas. La vue code, qui compare le texte brut ligne à ligne, la montre.
L'outil est-il vraiment gratuit ?
Oui, l'intégralité des outils sur Kristools sont 100% gratuits et accessibles sans inscription.
Mes données sont-elles protégées ?
Oui. Tous les traitements sont effectués directement et en toute sécurité dans votre navigateur. Aucune donnée personnelle n'est envoyée vers nos serveurs.