Ciao a tutti, premetto che è il mio primo post quindi non so se la sezione è quella giusta.
Mi scuso in anticipo se non fosse così.
Passo a esporre il mio problema:
Il mio intento è quello di inserire un input dato dall'utente all'interno dei dati del task/item che sta eseguendo. Per far questo mi avvalgo di JDOM poichè sto utilizzando un sistema dotato di item/task la cui specifica è definita attraverso un proprio XML.
Nell' XML dell'item (che sono riuscito correttamente a leggere con il codice che riporto sotto) i dati sono inseriti all'interno del tag <data></data> (anche questi sono riuscito a recuperarli con il codice riportato sotto).
Ancora una volta, un livello sotto i dati, è posto il data tree che ho recuperato con il codice seguente:codice:Element wir = new SAXBuilder().build(new StringReader(itemXML)).getRootElement(); Element data = wir.getChild("data");
A questo punto, una volto letto l'input e definito il nome della variabile dell'item (in questo esempio scrivo "var") è semplice recuperare proprio quella variabile in cui scrivere il valore inserito dall'utente (Vedi codice sotto).codice:Element wirData = (Element) data.getChildren().get(0);
Tutto questo funziona perfettamente finchè la variabile è una variabile semplice e non è del tipo complexType (Vedi esempio sotto)codice:String input = request.getParameter("input") Element dataitem = wirData.getChild("var"); dataitem.setText(input);
In questo caso si suppone che l'elemento da scrivere sia un sottoelemento della variabile complessa contenuta nei dati dell'XML e che quindi una volta ottenuta la variabile, io debba recuperare i figli e andare a scrivere in quello che mi interessa.codice:<xs:complexType name="VariabileComplessa"> <xs:sequence> <xs:element name="Figlio1" type="xs:string" /> <xs:element name="Figlio2" type="xs:string" /> </xs:sequence> </xs:complexType>
Per cui avevo pensato di utilizzare il codice sottostante
String input = request.getParameter("input") //leggo l'input
Element dataItem = wirData.getChild("VariabileComplessa"); //leggo la variabile complessa
Element subData = (Element) dataItem.getChildren().get(0); //ottengo i figli
Element subData1 = subData.getChild("Figlio"); //prendo ill figlio
subDataName.setText(input); //setto l'input dell'utente nel figlio
Il codice sopra non funziona.
Avevo provato anche con un codice più semplice
String input = request.getParameter("input") //leggo l'input
Element dataItem = wirData.getChild("VariabileComplessa"); //leggo la variabile complessa
Element subData1 = dataItem.getChild("Figlio1"); //leggo il figlio
subData1.setText(input); // sette l'input dell'utente nel figlo
Ma neanche questo funziona.
(Essendo una webApp utilizzo Tomcat; l'errore che mi riporta tomcat è il seguente:
Sarei molto grato a chiunque potesse darmi una mano.codice:Exception Details: java.lang.NullPointerException null

Rispondi quotando
