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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разборка XML файла используя xml_parse 
:(
    Опции темы
Egor.84
Дата 12.12.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте.
У меня вот проблема возникает при разборке XML документа при помощи xml_parse. У меня есть некий файл xml, я вот в него записываю переменную (shbl в зависимости от мне нужно выбирать нужный тип шаблона и прорисовыват его(координаты точек для прорисовки шаблона в другом xml файле хранятся))  и данные которые достать надо в последсвии:
Код

<reports>
<document shbl="1" defcolor="0">
<obj variable="[Number]" value="1" type="number"></obj>
..........
</document>
<document shbl="2" defcolor="0">
<obj variable="[Number]" value="1" type="number"></obj>
..........
</document>
</reports>

Вот я разбираю XML файл 
Код

function tag_open($parser, $tag, $attributes)
 { 
   global $m;
  foreach ($attributes as $a=>$v) 
    {
       switch($a){
       case SHBL:
          if($tag==DOCUMENT) $m[0]=$v;
          break;
       case variable:
          $m[1]=$v;
          break;
       default:  
          break;
       }     
    }
 }

Затем обьявленный глобально массив проверяю в другой функции на вид шаблона
Код

 switch($m[0]){
    case 1:
      $xmldata=implode("",file($name1));
      break;
    case 2:
      $xmldata=implode("",file($name2));
      break;
  }

Но тут так получается(видно я не правильно организовал разборку файла), что он всегда берет последний шаблон(данные которые содержит переменная $name2), а мне нужно чтоб он разобрал данные до первого закрывающегося тэга  </document> и передал переменную $m[0](=1) - прорисовал шаблон 1,затем снова разобрал кусок до </document> и вновь передал значение $m[0](=2)- прорисовал шаблон 2. А я видимо не правильно организовал разборку или передаю не правильно как-то, он у меня в итоге разберает весь файл и возвращает значение $shbl = последнему. 

M
skyboy
пользуемся кнопкой "код" для подсветки программного кода


Это сообщение отредактировал(а) skyboy - 12.12.2007, 16:52
PM MAIL   Вверх
N0dwis
Дата 21.12.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Не совсем понял, откуда у тебя вызывается switch($m[0]).
Вообще получается у тебя вроде все правильно, он и будет разбирать весь документ, и в результате у тебя в переменной $m будет результат разбора только последнего элемента <document>.
Попробуй завести переменную - счетчик разобранных элементов и $m преобразовать массив, каждый элемент которого соответствует одному <document>.
И посмотри функции DOM, там все попроще и логичнее ИМХО.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




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


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

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