troppo coice da controllare ... ci metto troppo.

cmq si hai una tabella ricorsiva. id_parent lo testimonia

allora la procedura

codice:
- se ho dati 

- carica tutti i dati con id_parent vuoto a 0 o quello che sia (come identifichi il ftto che una riga e' appunto radice.

- scorri iterativamente tutte le righe 
   - apri il tag
   - carica tutte le righe con id_parent == id
   - avvia ricorsione passando i dati estratti
   - concatena risultato
   - chiudi il tag
Ad ogni ricorsione puoi passare a che livello sei arrivato incrementandolo di 1 ad ogni chiamata cosi' potrai gestire tale dato.