GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je différencier deux fichiers XML ?

Une approche consisterait à transformer d'abord les deux fichiers XML en XML canonique et à comparer les résultats à l'aide de diff . Par exemple, xmllint peut être utilisé pour canoniser XML.

$ xmllint --c14n one.xml > 1.xml
$ xmllint --c14n two.xml > 2.xml
$ diff 1.xml 2.xml

Ou comme une ligne.

$ diff <(xmllint --c14n one.xml) <(xmllint --c14n two.xml)

La réponse de Jukka n'a pas fonctionné pour moi, mais elle indiquait Canonical XML. Ni --c14n ni --c14n11 trié les attributs, mais j'ai trouvé le --exc-c14n switch a trié les attributs. --exc-c14n n'est pas répertorié dans la page de manuel, mais décrit sur la ligne de commande comme "format canonique exclusif W3C".

$ xmllint --exc-c14n one.xml > 1.xml
$ xmllint --exc-c14n two.xml > 2.xml
$ diff 1.xml 2.xml

$ xmllint | grep c14
    --c14n : save in W3C canonical format v1.0 (with comments)
    --c14n11 : save in W3C canonical format v1.1 (with comments)
    --exc-c14n : save in W3C exclusive canonical format (with comments)

$ rpm -qf /usr/bin/xmllint
libxml2-2.7.6-14.el6.x86_64
libxml2-2.7.6-14.el6.i686

$ cat /etc/system-release
CentOS release 6.5 (Final)

Avertissement --exc-c14n supprime l'en-tête xml alors que --c14n ajoute l'en-tête xml s'il n'y est pas.


J'ai essayé d'utiliser la réponse de @Jukka Matilainen mais j'ai eu des problèmes avec les espaces blancs (l'un des fichiers était un énorme one-liner). Utilisation de --format aide à ignorer les différences d'espace blanc.

xmllint --format one.xml > 1.xml  
xmllint --format two.xml > 2.xml  
diff 1.xml 2.xml  

Remarque :Utilisez vimdiff commande pour la comparaison côte à côte des xmls.


Linux
  1. Comment joindre deux fichiers texte sous Linux

  2. Comment trouver des fichiers avec un certain sous-chemin ?

  3. Étant donné deux arborescences de répertoires, comment puis-je savoir quels fichiers diffèrent par leur contenu ?

  4. Comment fusionner deux fichiers avec AWK ?

  5. Comment faire la différence (uniquement les ajouts) entre deux fichiers sous Linux

Comment modifier les fichiers de configuration sur Ubuntu

Comment afficher deux fichiers côte à côte sous Linux

Comment comparer deux fichiers dans un terminal Linux

comment puis-je différencier deux sections du même fichier ?

Comment puis-je déplacer des fichiers avec xargs sous Linux ?

Comment puis-je voir simultanément deux fichiers tex dans TeXstudio?