PDA

Visualizza la versione completa : [java] Exception jdom


morphy79
21-04-2005, 16:58
:cry:

ma che cavolo vuole... sto codice mi genera una eccezione...
in pratica ho una hashtable con dentro degli element..
la riordino per chiave e creo un nuovo Document...
poi faccio un ciclo, recupero man mano gli element dalla hashtable...
solo che quando cerco di aggiungerli al nuovo documento non me lo lascia fare !!!

vi prego sono disperato... saran 2 ore che ci lotto...



try {

doc = builder.build(fileXML);

// ESTRAZIONE TUTTI I NODI
elencoNodi = doc.getRootElement().getChildren();

// PER OGNI NODO
Iterator i = elencoNodi.iterator();
while (i.hasNext()) {

// ESTRAE IL NODO MESSAGGIO
Element nodo = (Element)i.next();

// RECUPERA LA CHIAVE DEL NODO
keyNodo = nodo.getChild("DATA").getTextNormalize() + nodo.getChild("ORA").getTextNormalize();

// AGGIUNGE IL NODO CON LA SUA CHIAVE IN HASHTABLE
alberoXML.put(keyNodo, nodo);

}

// CREO PREPARO NUOVO NODO DA INSERIRE
Element nuovoNodo = new Element("MESSAGGIO");
nuovoNodo.setText(aggiungiMessaggio.getContenuto() );
Element dataChild = new Element("DATA").setText(aggiungiMessaggio.getData());
nuovoNodo.addContent(dataChild);
Element oraChild = new Element("ORA").setText(aggiungiMessaggio.getOra());
nuovoNodo.addContent(oraChild);

// AGGIUNGO LA CHIAVE DEL NUOVO MESSAGGIO NELLA HASHTABLE
alberoXML.put(aggiungiMessaggio.getData() + aggiungiMessaggio.getOra(),nuovoNodo);

// RIORDINO KEY IN UN VETTORE
Vector v = new Vector(alberoXML.keySet());
Collections.sort(v);

// CREO IL NUOVO DOCUMENTO
Document docNew = new Document();
Element rootNew = new Element("MESSAGGI");
docNew.setRootElement(rootNew);
rootNew = docNew.getRootElement();

// PER OGNI VOCE DEL VETTORE AGGIUNGI ELEMENT ALLA ROOT
for(int a = 0;a<v.size();a++){
Element recuperoElemento = (Element)alberoXML.get(v.elementAt(a));
rootNew.addContent(recuperoElemento);
}

// CHIAMO FUNZIONE DI SCRITTURA DOCUMENTO
writeXml("messaggi.xml", docNew);

}catch(Exception e){
System.out.println("Errore: " + e.toString() + e.getMessage());
}

morphy79
21-04-2005, 17:11
dimenticavo...
questa č l'eccezione sollevata :

Errore: org.jdom.IllegalAddException: The element already has an existing parent "MESSAGGI"

morphy79
21-04-2005, 18:11
grande !!!!

recuperoElemento.detach();

e ti toglie il parent, cosė non solleva pių l'eccezione e tutto funziona a meraviglia !!! :D

Loading