ich will XMLs vergleichen, dazu eignet sich diff(1) nicht so sehr. Ich suche eine bessere Moeglichkeit. Es muss der Whitespace normalisiert und z.B. Attribute sortiert werden. Dazu habe ich Moeglichkeiten gefunden (`xmllint --c14n' und verschiedenes sonst). Eines habe ich aber bislang nirgends gefunden: Das Sortieren einer Liste gleichnamiger Elemente.
Konkret folgende zwei Dateien:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>
<b>foo</b>
</a>
<a>
<b>bar</b>
</a>
</root>
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a>
<b>bar</b>
</a>
<a>
<b>foo</b>
</a>
</root>
Das Python-Script `xmldiffs' sieht schon ganz gut aus. Hier ist die Sortierzeile:
https://github.com/joh/xmldiffs/blob/06 ... ldiffs#L43
Einen aehnlichen Fall findet man hier:
https://stackoverflow.com/a/25339725
Ich kenne mich mit Python nur nicht aus.
Mein Ziel ist, dass an der Stelle nicht nach dem Elementnamen, sondern nach dem kompletten Baum unter dem Element sortiert wird. Also wenn man es genau nimmt, nach der Stringdarstellung des rekursiv sortierten, normierten XML-Baums darunter.
So wie ich Python kenne ist ist das eine Kleinigkeit.
Ich denke, dass ich von der Loesung gar nicht so weit entfernt bin. Vielleicht kann mit ein Python-Programmierer einen kleinen Tipp geben.
Alternativ waere auch eine Loesung in Ruby oder Go in Ordnung, oder ein fertiges Programm, das das kann.
Wenn alles nichts hilft koennte ich es auch selber schreiben und mir die Dinge anlesen, aber wenn ich das nicht muesste waer's mir auch recht.