Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: не могу разобрать xml [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
Panoptik
Отправлено: 22 Ноября, 2012 - 22:18:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




там структура вообще нелогичная
последних 2 элемента item вне родительского item

думаю имеет смысл прогонять циклом искать item, а после если в нем есть еще item, то брать его, если нет, то брать этот более верхнего уровня


-----
Just do it
 
 Top
jromka
Отправлено: 22 Ноября, 2012 - 22:31:23
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




хм....завтра пойду к начальству по этому вопросу
 
 Top
Panoptik
Отправлено: 22 Ноября, 2012 - 22:48:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




там довольно понятная структура
есть общее количество административніх единиц 36
каждая из них - это внешний узел item
потом идут его атрибуты(по моему мнению глава всего этого) и после них общее количество подчиненных подразделений и далее соответствующее число элементов - итемы вложенные в родительский

вот и вся структура
просто не могу понять что именно вы хотите извлечь оттуда, различать представителя родительского элемента от дочерних или слить их в единую сущность?


-----
Just do it
 
 Top
jromka
Отправлено: 22 Ноября, 2012 - 22:49:38
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




слить все оттуда
 
 Top
Panoptik
Отправлено: 22 Ноября, 2012 - 22:51:39
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




что значит слить? есть предложение добавить атрибут для главенствующего лица, а всё остальное будет таким же
минут 20 и будет всё пучком


-----
Just do it
 
 Top
jromka
Отправлено: 22 Ноября, 2012 - 22:56:43
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




вывести все оттуда ) что не понятно то )
 
 Top
caballero
Отправлено: 22 Ноября, 2012 - 23:14:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
вывести все оттуда ) что не понятно то )

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

Нельзя просто вывести
надо понимать что вывести
в каком виде
в какой последовательности

Хочешь кашу из данных - проще простого - прибил xml тэги регуляркой и все дела.
А дальше что c этим делать.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Panoptik
Отправлено: 22 Ноября, 2012 - 23:14:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $source = 'source.xml';
  3. $xml = simplexml_load_file($source);
  4.  
  5. //print_r($xml);
  6. $result = array();
  7.  
  8. foreach($xml as $k => $elem) {
  9.         if($k == 'item') {
  10.                 $mainnode = array();
  11.                 $mainnode['main'] = 1;
  12.                 $r = array();
  13.                 foreach($elem as $knode => $elemnode) {
  14.                         if($knode == 'item') {
  15.                                 $node = array();
  16.                                 $node['main'] = 0;
  17.                                 foreach($elemnode as $key => $value) {
  18.                                         $node[$key] = (string)$value;
  19.                                 }
  20.                                 $r[] = $node;
  21.                         } elseif($knode != 'total') {
  22.                                 $mainnode[$knode] = (string)$elemnode;
  23.                         }
  24.                 }
  25.                 $result[] = array_merge(array($mainnode),$r);
  26.         }
  27. }
  28.  
  29. echo '<pre>';
  30. print_r($result);
  31. echo '</pre>';
  32.  
  33.  


вот преобразование в линейный массив группированный по регионам, можно конечно и в один всё запихнуть. но намек есть, а дальше карты в руки вам

(Отредактировано автором: 22 Ноября, 2012 - 23:25:59)



-----
Just do it
 
 Top
jromka
Отправлено: 23 Ноября, 2012 - 14:18:25
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




короче )) как мне пояснили )) необходимо сделать рекурсию для данного xml
Структура его такова, один большой класс item, в котором имеются маленькие item, в которых в свою очередь могут встречаться еще маленькие item
 
 Top
caballero
Отправлено: 23 Ноября, 2012 - 14:58:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




jromka пишет:
короче )) как мне пояснили )) необходимо сделать рекурсию для данного xml
Структура его такова, один большой класс item, в котором имеются маленькие item, в которых в свою очередь могут встречаться еще маленькие item

еще короче - simplexml_load_file это все уже делает


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
jromka
Отправлено: 25 Ноября, 2012 - 17:42:24
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




нужна рекурсия!
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB