Bei der Verarbeitung von XML mit Standard-DOM ist die Reihenfolge der Attribute nach der Serialisierung nicht gewährleistet. Endlich habe ich festgestellt, dass ich die Standard Java XML Transform API benutze, um die Ausgabe zu serialisieren.Reihenfolge der XML-Attribute nach DOM-Verarbeitung
Allerdings muss ich eine Bestellung behalten. Ich würde gerne wissen, ob es eine Möglichkeit in Java gibt, die ursprüngliche Reihenfolge von Attributen einer XML-Datei mittels DOM-API zu behalten, oder irgendeine Art, die Bestellung zu erzwingen (vielleicht mithilfe einer alternativen Serialisierungs-API, die dies ermöglicht) Art von Eigentum). In meinem Fall reduziert sich die Verarbeitung, um den Wert einiger Attribute (nicht alle) einer Sequenz derselben Elemente mit einer Reihe von Attributen zu ändern und möglicherweise ein paar weitere Elemente einzufügen.
Gibt es einen "einfachen" Weg oder muss ich mein eigenes XSLT-Transformations-Stylesheet definieren, um die Ausgabe festzulegen und die gesamte XML-Eingabedatei zu ändern?
Update Ich muss all Ihre Antworten danken. Die Antwort scheint jetzt offensichtlicher als ich erwartet hatte. Ich habe der Reihenfolge der Attribute nie Beachtung geschenkt, da ich sie vorher nie gebraucht hatte.
Der Hauptgrund für eine Attributreihenfolge ist, dass die resultierende XML-Datei nur anders aussieht. Das Ziel ist eine Konfigurationsdatei, die Hunderte von Alarmen enthält (jeder Alarm wird durch eine Reihe von Attributen definiert). Diese Datei hat im Laufe der Zeit nur wenige Änderungen, aber es ist praktisch, sie geordnet zu halten, denn wenn wir etwas modifizieren müssen, wird es von Hand bearbeitet. Von Zeit zu Zeit benötigen einige Projekte leichte Modifikationen dieser Datei, z. B. das Setzen eines der Attribute auf einen kundenspezifischen Code.
Ich habe gerade eine kleine Anwendung entwickelt, um Originaldateien (die in allen Projekten verwendet werden) mit bestimmten Teilen jedes Projekts zusammenzuführen (den Wert einiger Attribute zu ändern), sodass die projektspezifische Datei die Aktualisierungen der Basisdatei erhält (neuer Alarm) Definitionen oder einige Attributwerte Bugfixes). Meine Hauptmotivation, geordnete Attribute zu verlangen, besteht darin, die Ausgabe der Anwendung gegen die Originaldatei mit Hilfe eines Textvergleichstools (wie Winmerge) überprüfen zu können. Wenn das Format (hauptsächlich die Reihenfolge der Attribute) gleich bleibt, können die Unterschiede leicht erkannt werden.
Ich dachte wirklich, dass dies möglich war, da XML-Behandlungsprogramme, wie XML-Spion, Sie XML-Dateien bearbeiten und einige Reihenfolge (Rastermodus) anwenden können. Vielleicht ist meine einzige Wahl, eines dieser Programme zu verwenden manuell ändern Sie die Ausgabedatei.
* Warum * Sie einen Auftrag halten müssen? Die Anforderung impliziert, dass Sie den XML-Text mit Tools verarbeiten, die nicht für XML erstellt wurden. Ist das der Fall? – Tomalak
Die Lösung für Ihr angegebenes Problem besteht darin, ein Programm zu schreiben, das die zu vergleichenden Dateien vor dem Vergleich vorverarbeitet. Ein solches Programm würde die Attribute in eine kanonische Reihenfolge bringen. –
Commander @Tomalak, ich verarbeite XML-Text mit Tools, die nicht für XML gemacht wurden: meine Augen. Xml ist auch ein von Menschen lesbares Format. –