Nabend.
Also mein Problem ist folgendes: Ich möchte ein Element zu einem Knoten hinzufügen. Damit es mit der xsd übereinstimmt sollen nach dem Hinzufügen alle Elemente der ersten Ebene alphabetisch sortiert werden damit sie danach serialisiert werden können. Mein Problem besteht nur dann, wenn das neue Element nicht schon einmal vorhanden ist (man kann ja z.B.: mehrere Telefonnummern haben -> dann passt alles)
Ich benutze JDOM
Wenn ich nach dem sortieren die neue Liste durchforste sind noch alle Attribute vorhanden. Serialisiere ich das Document, so sind alle Elemente leer.
ich hoffe ihr könnt mir helfen
Also mein Problem ist folgendes: Ich möchte ein Element zu einem Knoten hinzufügen. Damit es mit der xsd übereinstimmt sollen nach dem Hinzufügen alle Elemente der ersten Ebene alphabetisch sortiert werden damit sie danach serialisiert werden können. Mein Problem besteht nur dann, wenn das neue Element nicht schon einmal vorhanden ist (man kann ja z.B.: mehrere Telefonnummern haben -> dann passt alles)
Ich benutze JDOM
Code:
public void addNodeToElement(String id, Element newElement){
Element parent = getElementByID(id);
if(parent != null){
int index = getIndexToPaste(parent, newElement);
if(index != 0){
/* Element an der Stelle einfügen an der schon Elemente mit gleichem Namen vorhanden sind */
parent.addContent(index, newElement);
}
else{
/* Element an das Ende des parents anfügen, da noch keines vorhanden */
parent.addContent(newElement);
}
setModified(true);
List children = parent.getChildren();
Collections.sort( children, new XML_Element_Comparator() );
parent.setContent(children);
}
}// endmehtod
public void writeDocumentToFile(){
if( isModified() ){
XMLOutputter xmlOut = new XMLOutputter();
try{
xmlOut.output(document, new FileOutputStream(path));
}catch(IOException io){
io.printStackTrace();
}
setModified(false);
}
else
System.out.println("[The Document wasn't modified -> Nothing Done]");
}// endmethod
public class XML_Element_Comparator implements Comparator {
public int compare(Object o1, Object o2) {
String a = ((Element)o1).getName();
String b = ((Element)o2).getName();
System.out.println(a.compareTo(b));
return a.compareTo(b);
}
}// end class
Wenn ich nach dem sortieren die neue Liste durchforste sind noch alle Attribute vorhanden. Serialisiere ich das Document, so sind alle Elemente leer.
ich hoffe ihr könnt mir helfen