Ho fatto un Web Service il cui scopo è recuperare da database e altre risorse dei dati associati ad un identificativo. Gli identificativi possono essere direttamente associati a dei dati (caso semplice), o possono essere stati "splittati" in più identificativi (ognuno dei quali può essere direttamente associato ai dati o a sua volta splittato).

Morale ho fatto un metodo ricorsivo che più o meno fa questo:
preso l'identificativo, lo cerco nel DB e se è presente nel restituisco i dati (base della ricorsione)
se non è presente nel DB faccio il parsing di una pagina html che me ne indica gli split. Se ci sono split lancio la chiamata ricorsiva per ognuno degli identificativi trovati, altrimenti ne deduco che l'identificativo non esiste e restituisco null.

In questo modo, usando due parametri (identificativo e padre.. che ovviamente è null per la radice) riesco a visitare (in profondità) l'intero "albero" generato da un identificativo.

Il problema che ho è come gestire i dati per poi restituirli al client.
Non essendo molto pratico di Java e delle sue strutture dati, in fase di testing ho usato la cosa più semplice possibile: una concatenazione di stringhe con separatori.

per esempio:
se ho un identificativo I1 che è diviso in I2 e I3, e per I2 ho direttamente il dato D2 mentre I3 si divide in I4 e I5 che hanno associati i dati D4 e D5 rispettivamente.... ho il seguente albero
codice:
    I1
    |
 ----------------
 |              |
 I2            I3
 |              |
 D2        -------------
           |           |
          I4          I5
           |           |
          D4          D5
e al momento la stringa corrispondente è fatta così
I1.I2->D2; I1.I3.I4->D4; I1.I3.I5->D5;

In questo modo con qualche manipolazione lato client (PHP) resco a dare l'idea del "percorso" utilizzato per arrivare al dato... però ecco.. non mi convince molto e prima di impelagarmi in manipolazioni pesanti lato client per visualizzare i dati in modo comprensibile vorrei sapere da voi se avete qualche idea migliore su come costruirmi e trasmettere questa strutura dati per una più facile manipolazione lato client.

Grazie