Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг XML файла без знания структуры дерева, описание в названии темы 
:(
    Опции темы
SRV1292
Дата 31.7.2012, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.7.2012

Репутация: нет
Всего: нет



Доброго времени суток программисты и программистки. 
Вот такая задача,  сам пока никак не решу. 


[ЗАДАЧА]
Вытянуть всю полезную информацию из файла xml или точнее из файлов xml.  Задача  усложняется тем, что изначально неизвестно какой будет формат дерева xml , если бы мне было бы известно, какие узлы у дерева , какая глубина вложенности. А так нет. 
Как можно парсировать дерево , или точнее чем можно парсировать дерево, не зная , его структуры. 

Хотя бы пару умных мыслей в нужную сторону и я буду премного благодарен.

[PS]Я конечно понимаю что можно открыть xml файл как текстовый и парсировать уже как цепочку символов, но давайте это оставим для камикадзе. 

thnx 
PM MAIL   Вверх
ksnk
Дата 31.7.2012, 09:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Открыть для себя simplexml для небольших файлов XML или XML Reader для всяких.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
baldina
Дата 31.7.2012, 10:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(SRV1292 @  31.7.2012,  09:16 Найти цитируемый пост)
Как можно парсировать дерево , или точнее чем можно парсировать дерево, не зная , его структуры. 

достаточно иметь возможность получить для каждого узла исходящие ребра (или список дочерних узлов). 
обход делается элементарной рекурсивной процедурой
Код

function walk_tree ($root) {
  // <- тут, если нужно, обрабатываем текущий узел до обхода дочерних
  foreach (get_children($root) as $node)
    walk_tree ($node);
  // <- тут, если нужно, обрабатываем текущий узел после обхода дочерних
}

В spl есть class IteratorIterator, с помощью которого можно осуществлять рекурсивные обходы в стиле итераторов php.

легко решается и более общая задача - обход произвольного графа.

Синтаксический анализ (в т.ч. xml) тоже может быть выполнен рекурсивными процедурами (т.н. разбор сверху вниз). 
для xml: встретив открывающий тег, рекурсивно разбираем, пока не встретится закрывающий. все что попало внутрь - дети текущего тега.
Это уже не обход дерева, а, напротив - его построение.

впрочем для xml есть готовые решения, как сказал ksnk, изобретать велосипеды не надо.

Добавлено через 1 минуту и 30 секунд
Цитата(SRV1292 @  31.7.2012,  09:16 Найти цитируемый пост)
Я конечно понимаю что можно открыть xml файл как текстовый и парсировать уже как цепочку символов

а другого способа еще не придумали  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0762 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.