GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich zwei XML-Dateien unterscheiden?

Ein Ansatz wäre, zuerst beide XML-Dateien in Canonical XML umzuwandeln und die Ergebnisse mit diff zu vergleichen . Zum Beispiel kann xmllint verwendet werden, um XML zu kanonisieren.

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

Oder als Einzeiler.

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

Jukkas Antwort hat bei mir nicht funktioniert, aber sie hat auf Canonical XML verwiesen. Weder --c14n noch --c14n11 die Attribute sortiert, aber ich habe die --exc-c14n gefunden switch hat die Attribute sortiert. --exc-c14n nicht in der Manpage aufgeführt, aber in der Befehlszeile als "W3C exclusive canonical format" beschrieben.

$ 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)

Warnung --exc-c14n Entfernt den XML-Header, während --c14n den XML-Header voranstellt, wenn er nicht vorhanden ist.


Ich habe versucht, die Antwort von @Jukka Matilainen zu verwenden, hatte aber Probleme mit Leerzeichen (eine der Dateien war ein riesiger Einzeiler). Mit --format hilft, Leerraumunterschiede zu überspringen.

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

Hinweis:Verwenden Sie vimdiff Befehl für den direkten Vergleich der xmls.


Linux
  1. Wie kann ich bei zwei Verzeichnisbäumen herausfinden, welche Dateien sich inhaltlich unterscheiden?

  2. Wie kann man zwei Dateien mit AWK zusammenführen?

  3. So erhalten Sie den Unterschied (nur Ergänzungen) zwischen zwei Dateien in Linux

  4. wie man zwei Dateien konsistent Zeile für Zeile zusammenführt

  5. Wie verbinde ich zwei CSV-Dateien?

So bearbeiten Sie Konfigurationsdateien unter Ubuntu

So zeigen Sie zwei Dateien nebeneinander in Linux an

So verbinden Sie zwei Textdateien unter Linux

So vergleichen Sie zwei Dateien im Linux-Terminal

Wie kann ich zwei Abschnitte derselben Datei unterscheiden?

Wie kann ich zwei Tex-Dateien gleichzeitig in TeXstudio sehen?