JDOM - Problem beim Zusammenfügen zweier Dateien

Status
Nicht offen für weitere Antworten.

esmeralda

Mitglied
Hallo Allerseits,

nachdem ich mich nun den ganzen Abend dumm und dämlich gesucht hab und wieder an einem Fehler hänge bleibe, versuche ich mein Glück mal wieder hier. Bisher habt ihr mir hier immer super weitergeholfen - Danke!

Mein jetziges Problem hängt damit zusammen, dass ich aus einer bestehenden Datei einen bestimmten Teil (RULE samt aller Kinder) in einer anderen Datei einfügen möchte - beide haben die selbe Struktur.

Ich bekomme folgende Fehlermeldung beim Versuch:

Exception in thread "main" org.jdom.IllegalAddException: The Content already has an existing parent "RULE"
at org.jdom.ContentList.add(ContentList.java:209)
at org.jdom.ContentList.add(ContentList.java:131)
at org.jdom.ContentList.addAll(ContentList.java:283)
at org.jdom.ContentList.addAll(ContentList.java:253)
at org.jdom.Element.addContent(Element.java:827)

Hier der entsprechende Code:

Java:
		if (new File("final_ruleset_np.xml").exists()) {
			
			//final_ruleset_np.xml einlesen und JDOM Objekt erstellen
			String[] rule_data = {"ruleset_np.xml"};
			compute_jdom last_rule = new compute_jdom(rule_data);
			//die letzte Regel wird aus dem Datensatz gelesen und danach in last_num gespeichert
			int last_num = new Integer(last_rule.find_last_num());
			System.out.println("letzte Regel-Nummer:"+last_num);
			//die Nummer der neuen Regel ist eins höher, also Inkrement
			rule_counter = last_num++;
	    	 
			
			//hänge das RULE aus der Datei ruleset_np an final_ruleset_np an
			
			//lies ruleset_np.xml ein und speichere alle Elemente, die angehangen werden sollen
			//lies ruleset_np.xml ein
			String data_add = "final_ruleset_np.xml";
			SAXBuilder builder_add = new SAXBuilder(); 
			
			try {
			     //Die XML-Datei wird eingelesen
			    Document doc_add = builder_add.build(data_add);
			   	Element root_add = doc_add.getRootElement();    

			   	//setze Attribute für RULE
				Element rule_set = root_add.getChild("RULE");
			   	rule_set.setAttribute("NUM", Integer.toString(rule_counter));
			   	rule_set.setAttribute("ACC", Double.toString(rule_acc));
			 	rule_set.setAttribute("FREQ", Integer.toString(rule_freq));
                                //kopiere den gesamten Inhalt, um ihn anzuhängen
			   	List rule_add = root_add.getChild("RULE").getContent();

			 	
				//lies final_ruleset_np.xml ein
				String data = "final_ruleset_np.xml";
				SAXBuilder builder = new SAXBuilder(); 
			
				//hänge die neuen Elemente plus die neuen Attribute an final_ruleset.xml an
			    Document doc = builder.build(data);
			   	Element root = doc.getRootElement();  
			   	//gehe zu letztem Element RULE und hänge dahinter an
				root.addContent(rule_add);
					
				// XML Datei schreiben - mit Umbrüchen
				XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat()); 
				BufferedWriter bw = new BufferedWriter(new FileWriter("final_ruleset_np.xml"));
				outp.output(doc, bw);
			}
			catch (IOException e){
				  System.err.println(e);
				} catch (JDOMException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
			
			System.out.println("Regel Nummer "+last_num+" wurde in den finalen Regelsatz übernommen.");
    	}

Teil der übernommen werden soll - nur RULE samt ganzem Inhalt (Kinder und Co.)
[XML]<?xml version="1.0" encoding="UTF-8"?>
<RULESET>
<RULE S="NP">
<word />
</RULE>
</RULESET>[/XML]

Datei, an die angehangen werden soll.
[XML]<?xml version="1.0" encoding="UTF-8"?>
<RULESET>
<RULE S="NP" NUM="1" ACC="1.0" FREQ="1">
<word pos="Pgen" />
</RULE>
</RULESET>[/XML]

Falls jemand eine Idee hat, was ich falsch gemacht habe, bzw. was ich anders angehen muss - ich bin für jeden Tipp mehr als dankbar :).

*heißen Tee und Kekse hinstell*
 

esmeralda

Mitglied
Bin doch selber über die Lösung gestolpert. Wenn man folgende Zeile verwendet, wird auch kein Fehler mehr geschmissen und der Teil der einen Datei wird an die andere angehangen:

Java:
List rule_add = root_add.cloneContent();

Hatte auch noch ein paar kleine Variablen-Fehler drin... :oops: Also weiter gehts ^_^
 

webmanie

Neues Mitglied
Hallo zusammen, noch ein kleiner Nachtrag!

Die Exception jdom.IllegalAddException:The Content already has an existing parent ...

wird geworfen wenn man versucht ein Element mit existierendem Parent in ein Element mit dem gleichen Parent zu adden.

Deshalb gibt es hier die Element.clone() Methode. Diese ermöglicht es einen Klone zu erzeugen der sich so zusagen nicht mehr an seine Eltern erinnert. Damit ist es Problemlos möglich in über addContent einzufügen.

Ich hab dazu auch folgenden Artikel JDOM the Element addContent method - HowTo
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N jdom problem beim lesen von child elementen XML & JSON 5
P Problem beim erstellen eines neuen Elements (JDOM) XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
B jdom: getChildren() problem XML & JSON 4
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
R Problem bei Erstellung von XML(JDOM) XML & JSON 3
P XML mit hilfe von JDOM abspeichern macht Problem XML & JSON 6
K xml Datei mit JDOM erzeugen, Problem Namespaces XML & JSON 1
P JDOM oder SAX XML & JSON 3
Hijo2006 Grundsätzliches zu JDOM 2.x XML & JSON 1
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S JDom XML ein Element hinzufügen. XML & JSON 1
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
J JDOM XMLOutputter getPrettyFormat() XML & JSON 3
H JDOM setAttribute Reihenfolge XML & JSON 3
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
F Aus XML mit JDOM aus Elementattributen Werte rauslesen XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
T Dom, Jdom, Sax XML & JSON 8
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
Helgon JDOM schreibt nicht XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
G xml, jdom "Entität wurde referenziert aber nicht deklariert." XML & JSON 4
A XSL und JDom XML & JSON 3
G jdom-Klassen in Eclipse importieren XML & JSON 2
S JDOM ohne XML Header erzeugen? XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S JDOM nur Attribut Name XML & JSON 2
X JDom für SOAP Dateien geeignet? XML & JSON 3
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
S jdom hasChildren()? XML & JSON 1
T Frage zu getContent unter jdom XML & JSON 6
Z Tutorial für JDOM (XSD-Shema) XML & JSON 3
D jdom, xml, login-system XML & JSON 4
N JDOM: XML einlesen XML & JSON 4
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
lordcarlos jdom zu iso-8859-15 zwingen XML & JSON 4
P jdom XML-Encoding auslesen XML & JSON 12
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
H Schema-Validierung mit JDOM XML & JSON 2
lordcarlos JDOM und entfernen von children XML & JSON 4
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
S XML, UTF-8, JDOM und Umlaute XML & JSON 3
E XML - JDOM - Bäume: was würdet ihr hier machen? XML & JSON 11
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
T JDOM Bibiliothek XML & JSON 3
K JDOM vs. DOM, Schnittstellen XML & JSON 5
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
0x7F800000 jdom mit xml.transform inkompatibel, was soll ich nehmen? XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
A JDOM und Sonderzeichen < > XML & JSON 17
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
S Jdom+java webstart XML & JSON 4
K html -> cyberneko -> xml -> jdom . XML & JSON 3
I JDom Text ändern XML & JSON 4
C jdom.Element nicht vorhanden? XML & JSON 4
C XPath in JDOM klappt nicht XML & JSON 2
S Harte Nuss mit XML und JDOM XML & JSON 2
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
T Bild in XML per JDOM XML & JSON 4
D JDOM erzeugt leere xmlns Attribute XML & JSON 4
T Elemente zählen mit JDOM in XML XML & JSON 7
B jdom document aus string erzeugen? XML & JSON 1
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
T XML mit JDOM auslesen => langsam? XML & JSON 7
B jdom outputter ohne attribute XML & JSON 2
C XML encoding UTF-8 und JDOM XML & JSON 4
P Probleme mit JDom . addContent(int index,Collection c) XML & JSON 2
R key aus xml lesen mittels jdom XML & JSON 5
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
G einzelne tags mit jdom auslesen XML & JSON 4
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4
K JDOM SAXBuilder einlesen XML & JSON 6
S Ausgabe "asXML" mit Jdom XML & JSON 2
B Element an bestimmter Stelle einfügen (JDOM) XML & JSON 8
G XML mit JDOM ausgeben [Klappe die 1Mio.ste] XML & JSON 2
F XML mit JDOM auslesen XML & JSON 2
D JDOM auf den PC machen XML & JSON 6
J JDOM Unicode XML & JSON 2
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
P JDOM Werte verändern XML & JSON 4
S OutOfMemory mit JDOM XML & JSON 6
S org.jdom.document in String umwandeln. XML & JSON 2
M ISO-8859-1 >> UTF-8 + JDOM + Verwirrung. XML & JSON 2
J [Newbie] [JDOM] Element aus XML entfernen klappt nicht XML & JSON 4
J JDOM mit XML-Schema XML & JSON 8
P HTML-Sting in JDOM XML & JSON 7
B JDOM && ObjectOutputStream XML & JSON 8
B Versionskonflikt bei JDOM XML & JSON 9
B JDom -- getChild() liefert nicht nachvollziehbar null XML & JSON 2
M JDOM parse Exception XML & JSON 3

Ähnliche Java Themen

Neue Themen


Oben