98 votes

Comment puis-je différencier deux fichiers XML ?

Sous Linux, comment puis-je générer une différence entre deux fichiers XML ?

Idéalement, j'aimerais pouvoir le configurer pour qu'il soit plus strict ou moins strict, comme les espaces blancs ou l'ordre des attributs.

Je me soucie souvent du fait que les fichiers sont fonctionnellement identiques, mais diff seul serait ennuyeux à utiliser, surtout si le fichier XML ne comporte pas beaucoup de sauts de ligne.

Par exemple, ce qui suit devrait vraiment me convenir :

<tag att1="one" att2="two">
  content
</tag>

<tag att2="two" att1="one">
  content
</tag>

1voto

Vikram Points 11

Si quelqu'un tombe sur ce sujet, qu'il est développeur et qu'il connaît les langages de programmation, vous pouvez également vérifier la différence XML en utilisant la méthode suivante XMLUnit en C# ou en JAVA.

Pour vérifier la différence entre les deux, vous pouvez essayer ceci Outil de vérification des différences XML en ligne

Exemple de code C# pour vérifier la différence

string control = "<a><b attr=\"abc\"></b></a>";
string test = "<a><b attr=\"xyz\"></b></a>";

var myDiff = DiffBuilder.Compare(Input.FromString(control))
          .WithTest(Input.FromString(test))
          .Build();

Assert.IsFalse(myDiff.HasDifferences(), myDiff.ToString());

0voto

Andreas Nolda Points 9

Mon script Python xdiff.py pour comparer des fichiers XML ignore les différences dans l'ordre des espaces ou des attributs (contrairement à l'ordre des éléments).

Afin de comparer deux fichiers 1.xml y 2.xml vous devez exécuter le script comme suit :

xdiff.py 1.xml 2.xml

Dans l'exemple de l'OP, il ne produirait rien et renverrait le statut de sortie. 0 (pour aucune différences structurelles ou textuelles).

Dans les cas où 1.xml y 2.xml structurellement différent, il imite la sortie unifiée de GNU diff. unifiée de GNU diff et renvoie le statut de sortie 1 . Il existe plusieurs options pour contrôler la sortie, telles que comme -a pour la sortie de tous les contextes, -n pour la sortie sans contexte, et -q pour supprimer complètement la sortie (tout en retournant le statut de sortie).

-1voto

user19685 Points 621

J'utilise Au-delà de la comparaison pour comparer tous les types de fichiers texte. Ils produisent des versions pour Windows et Linux.

-1voto

Juve Points 2968

Notre site SD Différentiel intelligent compare les documents sur la base de structure par opposition à la mise en page réelle.

Il y a un différentiel intelligent XML. Pour le XML, cela signifie faire correspondre l'ordre des balises et du contenu. Il devrait noter que la chaîne de texte dans le fragment spécifique que vous avez indiqué était différente. Pour l'instant, il ne comprend pas la notion XML d'attributs de balise indiquant si les espaces blancs sont normalisés ou significatifs.

-1voto

RayLuo Points 249

Je ne suis pas sûr que (la dépendance d') un outil en ligne compte comme une solution mais, pour ce que ça vaut, j'ai obtenu un bon résultat avec ceci Outil de comparaison XML en ligne . Cela fonctionne tout simplement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X