JAVA - XML + JDom
Maike
- java
Hallo,
ich versuche aus einem großen XML-Dokument (siehe unten) mit Java + JDom mehrere kleine XML-Dokumente zu erzeugen (für jede Produktgruppe eine). Ich habe schon mehrere Möglichkeiten ausprobiert, jedoch erhalte ich immer die Exception:
org.jdom.IllegalAddException: The Content already has an existing parent "Adonia"
Woran liegt das? Warum hat das Dokument, das ich erstelle 2 Elemente, die Adonia heißen??
Kann mir jemand sagen, was ich falsch mache?
Hier ein Teil des Java-Codes:
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build("test.xml");
Element root = doc.getRootElement();
Element elem = root.getChild("Produktgruppen");
List produktgruppen = elem.getChildren();
//for Schleife über "produktgruppen"
Element e = (Element) produktgruppen.get(i);
Element element = new Element(e.getValue());
Document newDoc = new Document(element);
newDoc.addContent(root.getChild(e.getValue()).getChildren());
//end for Schleife
Hier ein Teil der XML-Datei:
<Document>
<Produktgruppen>
<Serie>Adonia</Serie>
<Serie>Arondo</Serie>
<Serie>Assisi</Serie>
</Produktgruppen>
<Adonia>
<Artikel>
<ArtNr>1150</ArtNr>
<FarbNr>JK75</FarbNr>
</Artikel>
<Artikel>
<ArtNr>1150</ArtNr>
<FarbNr>JK88</FarbNr>
</Artikel>
<Artikel>
<ArtNr>1396</ArtNr>
<FarbNr>JK73</FarbNr>
</Artikel>
</Adonia>
<Arondo>
...
</Arondo>
<Assisi>
...
</Assisi>
</Document>
Hallo,
vorneweg: Ich habe nie etwas mit JDOM gemacht. Was ich hier schreibe,
ist also (fast) reine Spekulation. :-)
org.jdom.IllegalAddException: The Content already has an existing parent "Adonia"
Mit "content" ist hier wohl eines der Element gemeint, die du
versuchst zu newDoc hinzuzufügen.
Offensichtlich haben diese Element bereits einen Parent, was ja auch
korrekt ist. Der Parent ist wohl "<Adonia>" in der alten XML.
Du willst dieses selbe Element jetzt aber dem neuen Dokument (newDoc)
zuweisen. Das mag das Element aber nicht, weil es schon einen Vater
hat. Daher die Exception.
Wenn ich das richtig sehe, gibt's da eine Methode "detach()", die
das Element von seinem Parent-Element löst. Probier das mal aus.
Gruß
Slyh
PS: Würd mich interessieren, falls es geklappt hat oder ob ich völlig
daneben lag.
Hallo Slyh,
vielen vielen Dank für diesen Hinweis,
mit der Methode detach() geht das jetzt!!! Muss man erst mal drauf kommen ;-)
Danke nochmal, hat mir sehr geholfen!!!
Gruß Maike