Ciao a tutti,
scrivo per chiedere aiuto a chi ha qualche esperienza con la libreria JDOM.
Il mio problema è il seguente:
nella mia applicazione carico un file xml gia esistente, e creo il corrispondente oggetto Document.
Successivamente devo trovare i tag di testo, per fare questo scorro l'albero xml con una funzione ricorsiva .
Una volta trovato il tag di testo devo ricavare il nodo "parent" e a questo aggiungere altri tag ("fratelli" di text).
Il problema è che se aggiungo il nodo durante l'iterazione incorro in una
java.util.ConcurrentModificationException
...vorrei cercare quindi di memorizzare da qualche parte un identificatore di nodo per ogni tag di testo e una volta terminata l'analisi di tutto il file accedere direttamente al nodo "padre" che mi interessa attraverso gli identificatori.
Purtroppo non ho trovato nessuna funzione in jdom che mi permette di ricavare una chiave o un identificatore univoco per i nodi....esiste???
Ho anche provato a settare un attributo "id" al tag di testo, ma poi, non ho nessun metodo che mi restituisca direttamente il nodo con attributo id =x....
insomma, io non ho più idee....
qualcuno può darmi un consiglio???
come si fa ad aggiungere un nodo all'albero xml con jDOM??????
spero di essere stata abbastanza chiara...
grazie a tutti i anticipo!!!!
ciao
ps: il file xml chedevo modificare è il file xml di word!!!
pps: posto il codice che mi da la ModificationCOncurrentException:
codice:public void load() { System.out.println("prova!!!!!!!!!"); SAXBuilder builder = new SAXBuilder(); String path = "C:\\prova.xml"; System.out.println("url file "+ path); try { Document doc = builder.build(path); Element root = doc.getRootElement(); Iterator i = root.getDescendants(new ElementFilter("t")); System.out.println("-----con la remove prova2---------"); Element rPr = new Element("rPr"); rPr.setAttribute("attr", "ciao"); List lista = new ArrayList(); while(i.hasNext()){ Element el = (Element)i.next(); Element parent = el.getParentElement(); i.remove(); root.addContent(rPr); } System.out.println("--------------"); } catch (JDOMException e) { System.out.println(path + " non è un URL corretto"); System.out.println(e.getMessage()); } catch (IOException e) { System.out.println("Could not check " + path); System.out.println(" because " + e.getMessage()); } }

Rispondi quotando


