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).
codice:
Element wir = new SAXBuilder().build(new StringReader(itemXML)).getRootElement();
Element data = wir.getChild("data");
Ancora una volta, un livello sotto i dati, è posto il data tree che ho recuperato con il codice seguente:
codice:
Element wirData = (Element) data.getChildren().get(0);
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:
String input = request.getParameter("input")
Element dataitem = wirData.getChild("var");
dataitem.setText(input);
Tutto questo funziona perfettamente finchè la variabile è una variabile semplice e non è del tipo complexType (Vedi esempio sotto)
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>
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.
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:
codice:
Exception Details: java.lang.NullPointerException
null
Sarei molto grato a chiunque potesse darmi una mano.