GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo diferenciar dos archivos XML?

Un enfoque sería convertir primero ambos archivos XML en XML canónico y comparar los resultados usando diff . Por ejemplo, xmllint se puede usar para canonicalizar XML.

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

O como una sola línea.

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

La respuesta de Jukka no funcionó para mí, pero apuntó a XML canónico. Ninguno --c14n ni --c14n11 ordené los atributos, pero encontré el --exc-c14n switch ordenó los atributos. --exc-c14n no aparece en la página del manual, pero se describe en la línea de comandos como "formato canónico exclusivo de 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)

Advertencia --exc-c14n elimina el encabezado xml mientras que --c14n antepone el encabezado xml si no está allí.


Intenté usar la respuesta de @Jukka Matilainen, pero tuve problemas con los espacios en blanco (uno de los archivos era una gran línea). Usar --format ayuda a omitir las diferencias de espacios en blanco.

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

Nota:Usa vimdiff comando para la comparación lado a lado de los xmls.


Linux
  1. Cómo comparar el contenido de dos tarball

  2. Dados dos árboles de directorios, ¿cómo puedo averiguar qué archivos difieren según el contenido?

  3. ¿Cómo fusionar dos archivos usando AWK?

  4. Combinar manualmente dos archivos usando diff

  5. ¿Cómo unir dos archivos CSV?

Cómo editar archivos de configuración en Ubuntu

Cómo mostrar dos archivos uno al lado del otro en Linux

Cómo comparar dos archivos en la terminal de Linux

¿Cómo puedo diferenciar dos secciones del mismo archivo?

¿Cómo puedo mover archivos con xargs en Linux?

¿Cómo puedo ver dos archivos tex en TeXstudio simultáneamente?