GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa membedakan dua file XML?

Salah satu pendekatannya adalah dengan terlebih dahulu mengubah kedua file XML menjadi Canonical XML, dan membandingkan hasilnya menggunakan diff . Misalnya, xmllint dapat digunakan untuk mengkanoniskan XML.

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

Atau sebagai one-liner.

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

Jawaban Jukka tidak berhasil untuk saya, tetapi itu mengarah ke Canonical XML. Baik --c14n maupun --c14n11 mengurutkan atribut, tetapi saya menemukan --exc-c14n switch memang mengurutkan atribut. --exc-c14n tidak terdaftar di halaman manual, tetapi dijelaskan di baris perintah sebagai "format kanonik eksklusif 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)

Peringatan --exc-c14n menghapus header xml sedangkan --c14n menambahkan header xml jika tidak ada.


Mencoba menggunakan jawaban @Jukka Matilainen tetapi mengalami masalah dengan spasi putih (salah satu file berukuran besar). Menggunakan --format membantu melewati perbedaan ruang kosong.

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

Catatan:Gunakan vimdiff perintah untuk membandingkan xml secara berdampingan.


Linux
  1. Bagaimana Cara Menemukan File Dengan Subpath Tertentu?

  2. Bagaimana membandingkan dua konten tarball

  3. Bagaimana cara menggabungkan dua file menggunakan AWK?

  1. Cara mendapatkan perbedaan (hanya penambahan) antara dua file di linux

  2. Menggabungkan dua file secara manual menggunakan diff

  3. Bagaimana cara menggabungkan dua file CSV?

  1. Cara Menggabungkan Dua File Teks di Linux

  2. Bagaimana cara melakukan perbedaan biner pada dua file berukuran identik di Linux?

  3. Bagaimana saya bisa menemukan semua file yang di-hardlink pada sistem file?