Ну, «наиболее эффективный» обычно зависит от того, как вы планируете получить доступ к данным.Вам просто нужно разобрать дерево, а затем отобразить его пользователю, и это все?
В этом случае, я полагаю, я бы смоделировал его как простое дерево, состоящее, скажем, из объектов Node.
Существуют другие древовидные структуры, которые вы можете использовать, но они усложняютсяи опять же, это зависит от того, как вы собираетесь использовать эти данные.Вы строите это дерево на веб-сервере, и, следовательно, должны быть настолько быстрыми, насколько это возможно, чтобы избежать его использования процессором?Вы просто отображаете это пользователю?
Другим вариантом было бы выгрузить необработанные строки на страницу, а затем написать javascript, чтобы сгенерировать дерево отображения из выгруженных данных.Таким образом, веб-браузер вашего клиента выполняет всю работу по синтаксическому анализу дерева и его отображению.
Правка для ответа на ваш комментарий :
Хорошо, тогда будет стандартная древовидная структураРабота?Я бы предположил, что вы знаете, как его создать, но на всякий случай:
Вы берете строку, анализируете ее токены.Начиная с первого токена и начиная с корня дерева, выясните, является ли токен дочерним по отношению к текущему узлу;если это так, установите его в качестве текущего узла и перейдите к следующему токену.Если нет, вставьте его в дерево и сделайте его новым текущим узлом.Отметьте эти узлы как узлы пространства имен.Повторяйте, пока не дойдете до последнего токена, который представляет ваш конечный объект.Вставьте в текущий узел свой объект с его параметрами.
Вы можете сделать все это с одним классом;пусть класс хранит тип узла (пространство имен или объект), список дочерних узлов и свойства объекта, когда узел имеет тип объекта.Или вы могли бы сделать это с наследованием и приведением, чтобы у каждого узла не было параметров для объекта, слышимый будет нулевым во всех узлах пространства имен.