Problem beim verschieben des Contents (Java/JDOM)

Vatar

Erfahrenes Mitglied
Ich habe von meinem Vorgänger ein Programm übernommen, welches eine Datenstruktur einließt und verändert. Dabei werden nicht vorhandene Elemente in die Struktur an bestimmter Stelle eingefügt. Genau das funktioniert nicht richtig. Ich habe den Fehler gefunden, und zwar wird beim Einfügen das Nachfolgende Element überschriben. Vor dem Einfügen, müssen aber alle nachfolgenden Elemente um eine Stelle nach hinten kopiert werden, da hab ich so probiert
Code:
        // Ein Element als Platzhalter anfügen
        node.addContent(new MyElement("Test"));
        
        // shift elements upwards | index = Stelle an der eingefügt werden soll
        for ( int i = node.getContentSize()-1; i > index; i-- ) {
            node.setContent( i, node.getContent( i - 1) );
        }

        // insert / add element
        if ( index >= node.getContentSize() )
            node.addContent( child );
        else
            node.setContent( index, child );
Leider bekomme ich nun in der Zeile (setContent in der Schleife) die Fehlermeldung
Code:
org.jdom.IllegalAddException: The Content already has an existing parent "RequestQuoteGlobalData"
Ich verstehe allerdings nicht was ich an dieser Stelle falsche gemacht habe. Er soll nur einen Platzhalter anfügen, von hinten beginnend bis zum index die Elemente eine Stelle nach hinten kopieren und das neue Element beim index einfügen (überschreiben)

Thx
 
Es funktioniert endlich :) *freu*

Ich darf keine Elemente einfügen, die schon vorhanden sind. Ich muss also wenn ich ein Element nach hinten kopieren wil, dieses temporär speichern, die alte Position mit einem neuen überschreiben und das temporäre danach wieder einfügen
Code:
 // Ein Element als Platzhalter anfügen
        node.addContent(new MyElement("Test"));
        
        // shift elements upwards
        // Dazu werden temporäre Elemente erstellt, da es sonst zu Fehlern kommt.
        for ( int i = node.getContentSize()-1; i > index; i-- ) {
            Element tmp = (Element)node.getContent(i-1);
            node.setContent( i-1, new Element("TEMP"));
            node.setContent( i, tmp );
        }

        // insert / add element
        if ( index >= node.getContentSize() )
            node.addContent( child );
        else
            node.setContent( index, child );
 
Dieser Post ist schon etwas älter, denoch will ich darauf antworten da er einigen helfen könnte die das gleiche Problem haben.

Code:
org.jdom.IllegalAddException: The Content already has an existing parent
Ich verstehe allerdings nicht was ich an dieser Stelle falsche gemacht habe.
.

Die Exception bekommst Du weil Du versuchst einen Content mit bestehenden Parents zu adden.

Die clone Methode kann Dir helfen Klone zu erzeugen die nicht mehr wissen wer Ihre Eltern sind. Dann ist es kein Problem mehr Sie mit addContent() einzuhängen.

Hier mal ein kleiner von mir verfasster Artikel dazu, JDOM the Element addContent method - HowTo

Hoffe ich kann Leidensgenossen helfen!
 

Neue Beiträge

Zurück