Ich moechte gerne ein xml-file auslesen, Nodes die auf derselben Ebene sind alphabetischen sortieren lassen, und dann das xml-file wieder schreiben...
Kann mir hierzu jemand ein link zu nem tutorial fuer einsteiger schicken, weil ich komme nicht so recht voran, kann JDOM das, oder sollte ich hierbei besser ein anderes API benutzen?
Hab mir das mal angeschaut und das ist glaube ich das was ich brauche, allerdings weiss ich nicht woher in der Klasse AngComparator das Objekt Element kommt, welches muss ich da importieren?
In welchem Paket liegt das Objekt Document, und in welchem Format erwartet er die datei?
Selbes problem wie beim AngComparator auch hier wieder mit Element, javax.swing.text.html.parser.Element passt nicht weil er dann die angegeben Methoden nicht vorhanden sind....
Wenn ich diesen beide einbinde bekomme ich folgende Fehlermeldungen:
Methode getDocument(FileReader) nicht vorhanden,
Methode getRoot(Document) nicht vorhanden,
Fehlendes Argument fuer removeChildren() (String oder String,Namespace)
Muss ich bei removeChildren das erste Child eintragen sodass quasi alles geloescht wird, damit dass sortierte xml eingetragen werden kann?
Ich weiß ja nicht wo du deinen Code da oben her hast aber "getDocument(Datei)" lässt auf eine Methode schließen die irgendwo stehen müsste in deiner Java-Klasse.
Allgemeint erhälst du Documente aus bestehenden Dateien z.B. so:
Machen moechte ich, ein komplettes XML-File einlesen dieses alphabetisch sortieren, und danach wieder in die Datei schreiben, ohne dabei natuerlich den Sinn des XML-Files zu veraendern, sprich die Elemente sollen auf derselben Ebene bleiben aber alphabetisch sortiert werden, ich hoffe es ist verstaendlich was ich meine?
edit: Den Code habe ich aus dem Beispiel auf das du mich hingewiesen hast...
Hab mich jetzt mit JDOM und XML beschaeftigt, und bin jetzt soweit dass das xml-file eingelesen wird, DOM kenn ich gluecklicherweise schon von HTML und habe damit keine probleme, allerdings funktioniert das sortieren nicht!
In diesem Abschnitt wird der Pfad aus einem Textfeld der GUI genommen das XML-File eingelesen, dann mit dem AngComparator sortiert ( was nicht richtig funktioniert ), und danach wieder in das file geschrieben wird.
Zum einen hat dein root nur 1 Kindelement, also gibt's da nicht viel zu sortieren und zum zweiten hast du überhaupt gar keine name Attribute in deiner XML.
sortiert, sondern in seiner Reihenfolge belassen, gibt es eine Moeglichkeit, Collections.sort anzupassen sodass sollten die Elemente denselben namen haben dass dann nach Attribut oder Content sortiert wird? (ich brauche eine eindeutige Reihenfolge)
Er soll, falls beide Elemente denselben Namen haben, schauen ob beide elemente ein Kind haben welches ConfigID heisst, und falls dass der Fall ist nach dem Content dieses Childs sortieren...
Allerdings bekomme ich eine NullPointerException bei "return o1.getChild("ConfigID").toString().compareTo(o2.getChild("ConfigID").toString());", aber eig sollte doch das try/catch diese abfangen oder nicht?
Ok das geht jetzt ohne NullPointerException, allerdings bekomme ich jetzt einen Fehler beim Starten den ich nicht kenne, und sortieren tut er folgendes XML auch nicht richtig (benutze ich zum testen):
Wenn es richtig funktionieren wuerde sollte, er <b key="867"> vor <b key="567"> einordnen...
Der Fehler lautet:
java.lang.NoClassDefFoundError: com/sun/java/accessibility/util/TopLevelWindowListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.net.FactoryURLClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)