| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Обработка структуры данных - дерева |
| Автор: kingu 22.12.2008, 03:15 |
| Доброго времени суток Использую DBIx::MyParsePP для синтаксического разбора SQL запроса (MySQL). Цель - модифицировать запросы. Как результат - модуль выдает структуру в виде дерева: - rule (узлы дерева): [ название, @дочерние элементы] - token (листья дерева, конечные элементы): [название, значение] Требуется делать поиск разного вида: - если rule1 является дочерним элементом rule2, то ... - если у правила rule1 дочерними элементами есть token1, any-rule, token2, то ... и т.п. В некоторой степени напоминает CSS. Сейчас все эта обработка реализованна в виде рекурсивного обхода всего дерева с анализом каждого элемента. Получается достаточно запутано. Хочется отделить условия поиска и обработчики от самого обхода дерева. Может есть модуль, который умеет работать с tree-структурами и выполнять подобного рода поиск с вызовом обработчиков для найденных элементов? Сам искал, не нашел. Если кто-то подскажет ключевые слова для поиска алгоритмов - тоже пригодится. Спасибо. |
| Автор: KSURi 22.12.2008, 10:51 |
| http://search.cpan.org/~samtregar/Class-XPath-1.4/XPath.pm |
| Автор: dmitryk1 22.12.2008, 11:51 | ||||
Классно. А как это прикрутить к работе с базой данных? С таблицей: ID | ParentID | Name например. А этот модуль, как я понял, позволяет использовать XPath только с загруженным хтмлем? судя по:
Или подразумевается любая структура данных загруженная в память? Но в таком случае к работе с базой это не применимо :( 2kingu: В оракле, в его sqlе есть специальные формы запросов, для таких поисков, типа найти чилдрена такой ветки с таким-то названием... или подобное. Возможно и в mysqle такое есть. я бы советовал порыть в направлении sql запроса, как самый быстрый и удобный вариант. |
| Автор: KSURi 22.12.2008, 13:00 |
| dmitryk1, а зачем прикручивать это к базе? В первом посте такого условия не было, насколько я понял. Применять данный модуль можно к любой структуре данных. |
| Автор: dmitryk1 22.12.2008, 18:45 | ||
Мда... Действительно невнимательно прочитал видимо. Увидел то, что хотел |
| Автор: kingu 24.12.2008, 13:39 |
| KSURi, спасибо за Class::XPath, похоже на то что нужно. |