Я вижу несколько решений, но все они сводятся к созданию нескольких узлов.
Первый - это несколько узлов для нескольких файлов, но у каждого файла есть атрибут пути. Учитывая это:
$fl1 = '/home/the_spleen/spleen.txt';
$fl2 = '/home/the_bowler/not_enough_beer/spleen.txt';
Вывести что-то вроде этого:
<spleen path='/home/the_spleen/'><!-- spleenerficy --></spleen>
<spleen path='/home/the_bowler/not_enough_beer/'><!-- no. just no. --></spleen>
Основная выгода? он позволяет вам создавать и выполнять итерации практически точно так же, как вы это делали. Ущерб? Он избавляется от одного имени, одного узла в parent.children этого узла.
Другим вариантом будет создание подэлементов. Учитывая те же файлы:
<spleen>
<fl path='/home/the_spleen/'><!-- fl-ify! --></fl>
<fl path='/home/the_bowler/not_enough_beer/'><!-- drink! --></fl>
</spleen>
Преимущество? Существует связь 1: 1 между уникальными именами файлов и узлами. Ущерб? Вам нужно будет добавить логику рекурсии.
Учитывая эти выборы, я бы лично выбрал первое. Кажется, что добавление логики рекурсии может привести ко всем видам плохости и раздражающего ре-факторинга. Но у меня только ограниченный обзор вашего проекта отсюда.