Element an bestimmter Stelle einfügen (JDOM)

Status
Nicht offen für weitere Antworten.

brasilian

Aktives Mitglied
Hallo,

ich möchte ein Element mittels JDOM an einer bestimmten Stelle einfügen. Die Board-Suche hierzu hat mir u.a. die Methode addContent (int Index, Element neu) ausgespuckt. Diese Methode kann ich jedoch nicht nutzen, da ich die JDOM-Version b9 verwenden muss. Ich kann also nur mittels addContent (Element neu) neue Elemente an das Ende des Dokumentes einfügen.

Ich glaube (und hoffe), dass es aber trotzdem auch mit meiner älteren Version (umsteigen nicht möglich) von JDOM möglich ist. Meine Idee hierzu sieht wie folgt aus.

Ich hole mir die Struktur des XML-Documents in eine Liste vom Typ List. Ich durchsuche dann diese Liste bis ich die gewünschte Position gefunden habe. Das neue Element soll vor dem ersten Element eingefügt werden, welches keinen Unterelemente hat. Sobald ich die Position gefunden habe, füge ich der Liste ein neues Element an der entsprechenden Position hinzu. Zum Schluß übernehme ich dann die Liste als XML-Struktur.
Hier ist mein Code, der genau dies machen SOLL:

Code:
List liste = document.getRootElement().getChildren();
//Suchen der einzufügenden Position
for (int pos = 0 ; pos < liste.size() ; pos++)
{
    try 
    {
        if (((Element)(liste.get(pos))).getChildren() != null)
        {
            liste.add(pos + 1, neuesElement);
            document.getRootElement().setContent(liste);
            break;
        }
    }

    //In der Liste befinden sich nicht nur Elemente sondern auch Strings
    catch (ClassCastException e)
    {

    }
}

Das Resultat des Codes ist jedoch ein leeres XML-Dokument. Wer kann mir dies erklären ?

Viele Grüße
Brasi
 

Wildcard

Top Contributor
Wo schreibst du das Document den raus? ???:L

Code:
    //In der Liste befinden sich nicht nur Elemente sondern auch Strings
    catch (ClassCastException e)
    {

    }
Dann mach eine Typ-Prüfung anstatt auf eine Exception zu warten :noe:
 

brasilian

Aktives Mitglied
Hallo Wildcard,

das Document wird mit XMLOuttputer nach der for-Schleife geschrieben. Dies ist leider in meinem Code-Ausschnitt nicht deutlich geworden. Wenn ich die normale Methode addContent (Element neu) verwendet hatte, wurde es aber am Ende schon vollständig aber nicht in meiner gewünschten Reihenfolge rausgeschrieben.

Dann mach eine Typ-Prüfung anstatt auf eine Exception zu warten

Jetzt steh ich etwas auf dem Schlauch. Wie soll dies den gehen ?


Gruß
Brasi
 

Wildcard

Top Contributor
brasilian hat gesagt.:
Jetzt steh ich etwas auf dem Schlauch. Wie soll dies den gehen ?
instanceof

Ist dir eigentlich klar das deine neue Liste an Position 0 kein Objekt enthält und das sie beim ersten Element das Kinder hat komplett beendet wird?

Davon abgesehen macht der Code doch nichts anderes als jedes Element der Liste um einen Platz zu verschieben.
Wozu das ganze? ???:L
 

brasilian

Aktives Mitglied
Hallo Wildcard,

das meine Liste an Position 0 kein Element enthält ist mir so nicht klar. Das erste Element einer Liste beginnt doch generell an Position 0, und so erwarte ich doch, dass an dieser Position entweder ein Typ String oder ein Typ Element steht.

Sobald ich auf das erste Element mit Kindern treffe wird meine Liste nicht komplett beendet. Die for-Schleife wird beendet, doch vorher schiebe ich ja noch das neu einzufügende Element vor dem Element mit den Kindern. Die Liste ist somit erweitert worden, nämlich genau um ein Element. Alle anderen Elemente müssen dann zwangsläufig um eine Position nach hinten verschoben werden.

Die for-Schleife wird während des Programmablaufs n-mal aufgerufen, wodurch n-neue Elemente in der Liste und in meiner XML-Datei eingebunden werden.

Vielen Dank für deine bisherige Hilfestellung :toll:
Christian
 

Wildcard

Top Contributor
Ah, ok. Ich seh gerade, das ist ja keine neue Liste, sondern die alte... mein Fehler.

Das neue Element soll vor dem ersten Element eingefügt werden, welches keinen Unterelemente hat.
Code:
liste.add(pos + 1, neuesElement);
Du fügst es doch aber genau danach ein ???:L
 

brasilian

Aktives Mitglied
Hallo,

das mit dem Einfügen war mein Fehler. Ich habe es korrigiert, doch am Ergebnis ändert dies leider nichts.
Ich erhalte nur nur die Codierungszeile (ISO...) und eine </Root> in der zweiten Zeile.
 

Wildcard

Top Contributor
Nimm dir den Debugger zur hand und schau dir den Inhalt der Liste nach der Schleife an.
Wenn da alles ok ist setz dir einen breakpoint in die Methode in der du raus-schreibst, dann findest du das Problem sicherlich schnell.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 jaxb XML Mapper - Root Element mit Attribut XML & JSON 20
B DOMParser - Element filtern XML & JSON 1
N jdom2 - Referenz auf Nested Element XML & JSON 2
H XML Element `Class` wird nicht gelesen XML & JSON 2
F xml Element ersetzen XML & JSON 5
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
W XML-Element komplett löschen XML & JSON 5
L XML nur ein Element einlesen XML & JSON 2
R XSD in einer choice mehrmals das selbe element möglich XML & JSON 5
S JDom XML ein Element hinzufügen. XML & JSON 1
ARadauer xsd ref auf element oder typen verwenden? XML & JSON 2
R cvc-complex-type.3.2.2: Attribute 'uuid' is not allowed to appear in element 'jasperReport'. XML & JSON 4
F EMF, XSD to ECore mapping, Attribute vs. Element XML & JSON 2
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
Landei JAXB: Wert von übergeordneten Element XML & JSON 4
N Alle namespaces ins Root Element hinauf ziehen XML & JSON 2
N Alle namespaces ins Root Element hinauf ziehen XML & JSON 2
S Validierung mit JAXB2 ohne root-element XML & JSON 10
E xml Element sortieren XML & JSON 2
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
Z XML parsen - Element mit Werten XML & JSON 2
enne87 Element-Werte werden falsch ausgelesen XML & JSON 2
M XSD - Child Element möglich, aber nicht zwingend erforderlich XML & JSON 6
N Individuelles Wrapper-Element um Collection mit JAXB XML & JSON 6
W Element mit XPath @id ermitteln wenn nur ein teil der id bekannt ist XML & JSON 2
R Element - Ausgeben von Kommentar XML & JSON 4
L Element manipulieren in einem DOMResult per XPath XML & JSON 10
G mit Transformer.transform ein Element überschreiben XML & JSON 2
G XSL: Element über eine Variable ermitteln XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
B XML-Element als String ausgeben XML & JSON 5
L Element einlesen <Telefon name="Karl">134313 XML & JSON 2
S Cannot find the declaration of element XML & JSON 2
M Jaxb Annotationen, Wert als XML Element XML & JSON 2
O XML Element mit ":" im Namen XML & JSON 23
G Element mit Text und Unterelement XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
M XML einlesen - prüfen ob Element vorhanden XML & JSON 2
F choice-Element mit minOccurs=0" XML & JSON 11
X Xpath, alle Element die mit "user" beginnen auswäh XML & JSON 2
C Mehrere Element_Nodes zusammenfassen zu einem Element XML & JSON 9
K Auf bestimmtes Element im XML zugreifen XML & JSON 3
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
H Adapter: String->Element bzw. Element->String XML & JSON 6
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
S String in element casten XML & JSON 2
S Element hinzufügen XML & JSON 2
S zum element Attribut xmlns zufügen XML & JSON 6
N bestimmtes Element auslesen - ich verzweifel XML & JSON 3
J [Newbie] [JDOM] Element aus XML entfernen klappt nicht XML & JSON 4
P [Solved] XSL: Element-Variable auslesen XML & JSON 2
Noar XSLT - Element-Wrapping XML & JSON 2
R JDOM Root-Element entfernen aber Rest behalten XML & JSON 10
S Element addContent(Element) gibts nicht XML & JSON 5
R node.getNodeValue() bringt mir komplettes CDATA-Element XML & JSON 3
W Element Liste in Root XML & JSON 5
D Text, String vor einem Root Element einfügen XML & JSON 2
W root element parsen,Hilfe! XML & JSON 5
E Element.setTextContent(String); Ersatz fuer Version 1.4? XML & JSON 3
A NullPointerException bei leerem Element XML & JSON 4
D XML: Element section content does not follow the DTD XML & JSON 6
clemson element mit id in jdom löschen XML & JSON 2
A Element an einer bestimmten Stelle einfügen (nicht am Ende) XML & JSON 4
R JDom: XML Code von Element, und: ist Element ein standalone XML & JSON 2
G XML-API mit bestimmter Funktionalität gesucht XML & JSON 4
T Werte in XML Datei an entsprechender Stelle einfügen XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben