![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
SRV1292 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 31.7.2012 Репутация: нет Всего: нет |
Доброго времени суток программисты и программистки.
Вот такая задача, сам пока никак не решу. [ЗАДАЧА] Вытянуть всю полезную информацию из файла xml или точнее из файлов xml. Задача усложняется тем, что изначально неизвестно какой будет формат дерева xml , если бы мне было бы известно, какие узлы у дерева , какая глубина вложенности. А так нет. Как можно парсировать дерево , или точнее чем можно парсировать дерево, не зная , его структуры. Хотя бы пару умных мыслей в нужную сторону и я буду премного благодарен. [PS]Я конечно понимаю что можно открыть xml файл как текстовый и парсировать уже как цепочку символов, но давайте это оставим для камикадзе. thnx |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
достаточно иметь возможность получить для каждого узла исходящие ребра (или список дочерних узлов). обход делается элементарной рекурсивной процедурой
В spl есть class IteratorIterator, с помощью которого можно осуществлять рекурсивные обходы в стиле итераторов php. легко решается и более общая задача - обход произвольного графа. Синтаксический анализ (в т.ч. xml) тоже может быть выполнен рекурсивными процедурами (т.н. разбор сверху вниз). для xml: встретив открывающий тег, рекурсивно разбираем, пока не встретится закрывающий. все что попало внутрь - дети текущего тега. Это уже не обход дерева, а, напротив - его построение. впрочем для xml есть готовые решения, как сказал ksnk, изобретать велосипеды не надо. Добавлено через 1 минуту и 30 секунд
а другого способа еще не придумали ![]() |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |