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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML как сценарий 
:(
    Опции темы
Alix36
Дата 16.5.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как и какими инструментами сделать такую вещь.
Есть XML файл
такого типа.
Код

<body>
<quest id=1>
<insert sid=345 />
<delite sid=321 />
</quest>
<quest id=2>

<insert sid=3 />
<delite sid=2 />
</quest>
<quest id=3>

<insert sid=35 />
<delite sid=31 />
</quest>
<quest id=4>

<insert sid=5 />
<delite sid=1 />
</quest>
</body>


Вот РНР выполняет скрипт,  и получаем переменную ID 
после этого выбираем node по ID 
Читаем все тэги внутри 
а дальше! Если видим <insert sid=5 /> выполняем function insertdb (sid)
Вот как это сдлать можно?


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Golda
Дата 18.5.2007, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



Готовых общих решений не знаю. Но для данной конкретной задачи я бы написала что-нибудь вроде

Код

$xml = new SimpleXMLElement($xmlstr);
foreach ($xml->xpath("/body/quest[@id=$id]/*") as $operator) {
    $func = $operator->getName() . "db";
    $arg = $operator->attributes()->sid;
    call_user_func($func, $arg);
}


Ну и плюс обработка ошибок, конечно


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Alix36
Дата 20.5.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



аа.. я в XML пока ориентируюсь плохо, как при таком  скрипте подключать файл?
и что делают вот эти строки
Код

 $func = $operator->getName() . "db";
    $arg = $operator->attributes()->sid;



--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Golda
Дата 20.5.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



Мой код подразумевал, что XML хранится в строке. Чтобы зачитывать из файла, используйте функцию simplexml_load_file()

Код

$xml = simplexml_load_file('test.xml');


Только, чтобы с Вашим XML SimpleXML мог работать не забудьте заковычить значения аттрибутов.

Далее по коду.
Код

$operator->getName()

возвращает имя узла, на базе которого составляется имя исполняемой функции 
Код

$operator->getName() . "db"


insert -> insertdb


$operator->attributes()->sid возвращает значения аатрибута sid для данного узла $operator. В принципе, это можно сделать и короче

Код

$arg = $operator['sid'];




--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Alix36
Дата 20.5.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



пасиб


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Alix36
Дата 20.5.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а что будет если у одного из нода будет 2 параметра
<an txt='TXT!' id='2'/>
 и такая функция
Код

function an($sid)
{
$an[]=$sid;//тут ID
$an2[]=????;//тут текст
}

можно какнибудь сделать?

Добавлено через 52 секунды
Код

$arg = $operator->attributes()->sid;

эта строчка смущает получается сколькоб небыло параметров все будет в одной переменной


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Alix36
Дата 20.5.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



врубился я туплю


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




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


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

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