Elementtree Einstellung die Reihenfolge der attribute

Ich versuche zu schreiben, ein python-Skript zur Standardisierung von generischen XML-Dateien zum konfigurieren von websites und website-Formulare. Aber dazu würde ich gerne entweder halten die ursprüngliche Attribut-Reihenfolge der Elemente, oder noch besser in der Lage sein, um Sie neu anzuordnen, die in einer vorgegebenen Art und Weise. Momentan werden die meisten xml-Parser, die ich habe versucht, re-schreiben Sie das Attribut, um sein alpha-numerisch. Wie diese XML-Dateien sind menschliche gelesen/geschrieben und gewartet wird, ist dies nicht allzu sinnvoll.

Beispielsweise ein generisches element Aussehen kann, wie dies in der XML;

<Question QuestionRef="XXXXX" DataType="Integer" Text="Question Text" Availability="Shown" DefaultAnswer="X">

Jedoch einmal Durchlaufen elementtree und neu geschrieben, um eine neue Datei dies geändert:

<Question Availability="Shown" DataType="Integer" DefaultAnswer="X" PartType="X" QuestionRef="XXXXX" Text="Question Text">

Als Ziel des Skript ist die Vereinheitlichung einer großen Anzahl von XML-Dateien, um zu erhöhen die Lesbarkeit zwischen den Kollegen und, dass die Informationen innerhalb des Elements Attribute haben unterschiedliche Ebenen von Bedeutung (ZB. QuestionRef ist sehr wichtig), dicates, dass die Attribute müssen sinnvoll angeordnet.

Ich verstehe, dass python-dicts (die Attribute werden gespeichert) sind natürlich verdreht und XML-Spezifikation besagt Attributreihenfolge ist unbedeutend, aber das die menschliche Lesbarkeit Faktor ist die treibende Kraft hinter der Schrift.

In anderen Fragen (auf Stack Overflow), ähnlich wie diese die ich gesehen habe, bemerkte er, dass pxdom können dies tun (Frage link: link), aber ich finde keine Erwähnung von, wie kann es dazu in pxdom Dokumentation oder über eine google-Suche. So ist es eine Möglichkeit, die zur Aufrechterhaltung der Reihenfolge der Attribute oder definieren Sie mit aktuellen XML-Parser? Vorzugsweise ohne Rückgriff auf hotpatching :)!

Jede Hilfe, die jeden bieten kann, wäre sehr dankbar :).

  • Meine erste, obwohl, ist, dass vielleicht sollten Sie ein anderes Dateiformat (wie yaml?) für menschliche Bearbeitung - und dann zu übersetzen, dass die XML-falls erforderlich-Systemen...
  • Wenn die Reihenfolge der Attribute ist wichtig, haben Sie sich überlegt mit sub-Elementen (e.g: <Availability>Shown</Availability>) statt? Es, die Reihenfolge ist definitiv beibehalten.
  • Problem ist die XML-übergabe an C# - code generiert der websites in HTML und javscript. Dieser code wurde entwickelt werden, die über etwa 5 Jahre, also eher unhandlich. Daher Wechsel von XML ist nicht möglich, da die Bewegung der Verfügbarkeit zu einem sub-element. Danke für die Hilfe aber 🙂
Schreibe einen Kommentar