...sarà un menu, e di conseguenza le voci saranno più o meno numerose ma sempre in considerazione del fatto che sarà un menu.

non ci sono problemi nel strutturare l'xml che sarà una cosa del tipo:
<menu>
<elemento label="menu 1" />
<subelemento label="subElemento1di1" />
<subelemento label="subElemento2di1" />
<subsubelemento label="subsub1 (di subElemento2di1)" url="qualchecosa" id="1"/>
<subsubelemento label="subsub2 (di subElemento2di1)" url="qualchecosa" id="2"/>
<elemento label="menu 2" />
<subelemento label="subElemento1di2" />
<subsubelemento label="subsub1 (di subElemento1di2)" url="qualchecosa" id="3"/>
<elemento label="menu 3" />
<subelemento label="subElemento1di3" />
<subelemento label="subElemento1di3" />
</menu>

Una tipica struttura ad albero.

Concettualmente, il menu, ce l'ho in testa:
carico l'xml,
popolo, parsando xml, gli array dei menu, submenu, subsubmenu (label e url),
costruisco il menu attaccando i relativi mc.
Se non ho nessun parametro (id) settato il menu è chiuso altrimenti si apre al submenu e setto il relativo subsubmenu "attivo".

Non pensavo, visto l'alto numero di volte in cui l'ho visto in giro (primo fra tutti flasx-mx.html.it), fosse così complicato..ok, per me lo è, ma io sono alle prime armi...