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:
Hier der entsprechende Code:
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*
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*