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 (номенклатура с категориями)

 PHP.SU

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


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

> Без описания
3d_killer
Отправлено: 06 Июня, 2014 - 11:24:04
Post Id



Участник


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


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




вид:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. object(SimpleXMLElement)#5 (3) {
  3.  ["@attributes"]=>
  4.   array(2) {
  5.     ["ВерсияФормата"]=>
  6.     string(3) "1.0"
  7.     ["ДатаВыгрузки"]=>
  8.     string(8) "6.6.2014"
  9.   }
  10.   ["Группа"]=>
  11.   array(12) {
  12.     [0]=>
  13.     object(SimpleXMLElement)#6 (3) {
  14.      ["@attributes"]=>
  15.       array(4) {
  16.         ["Код"]=>
  17.         string(8) "00001167"
  18.         ["Наименование"]=>
  19.         string(16) "Автошины"
  20.         ["ПолноеНаименование"]=>
  21.         string(0) ""
  22.         ["Родитель"]=>
  23.         string(0) ""
  24.       }
  25.       ["Группа"]=>
  26.       object(SimpleXMLElement)#19 (3) {
  27.        ["@attributes"]=>
  28.         array(4) {
  29.           ["Код"]=>
  30.           string(4) "1685"
  31.           ["Наименование"]=>
  32.           string(12) "Старьё"
  33.           ["ПолноеНаименование"]=>
  34.           string(0) ""
  35.           ["Родитель"]=>
  36.           string(8) "00001167"
  37.         }
  38.         ["Группа"]=>
  39.         object(SimpleXMLElement)#40 (2) {
  40.          ["@attributes"]=>
  41.           array(4) {
  42.             ["Код"]=>
  43.             string(4) "3621"
  44.             ["Наименование"]=>
  45.             string(35) "Щётки для мойки нов"
  46.             ["ПолноеНаименование"]=>
  47.             string(0) ""
  48.             ["Родитель"]=>
  49.             string(4) "1685"
  50.           }
  51.           ["Элемент"]=>
  52.           array(9) {
  53.             [0]=>
  54.             object(SimpleXMLElement)#1237 (1) {
  55.              ["@attributes"]=>
  56.               array(7) {
  57.                 ["Код"]=>
  58.                 string(4) "3623"
  59.                 ["Наименование"]=>
  60.                 string(71) "Скребок складной 10" дл. 125 см. ES2116 (губка)"
  61.                ["ПолноеНаименование"]=>
  62.                string(71) "Скребок складной 10" дл. 125 см. ES2116 (губка)"
  63.                 ["Родитель"]=>
  64.                 string(4) "3621"
  65.                 ["ЦенаЗакупочные"]=>
  66.                 string(5) "133.9"
  67.                 ["ЦенаМинимальная"]=>
  68.                 string(3) "155"
  69.                 ["ЦенаОптовая"]=>
  70.                 string(3) "170"
  71.               }
  72.             }
  73.             [1]=>
  74.             object(SimpleXMLElement)#1238 (1) {
  75.              ["@attributes"]=>
  76.               array(7) {
  77.                 ["Код"]=>
  78.                 string(4) "3625"
  79.                 ["Наименование"]=>
  80.                 string(74) "Скребок складной 8" дл. 80 см. ES2117-2123 (губка)"
  81.                ["ПолноеНаименование"]=>
  82.                string(74) "Скребок складной 8" дл. 80 см. ES2117-2123 (губка)"
  83.                 ["Родитель"]=>
  84.                 string(4) "3621"
  85.                 ["ЦенаЗакупочные"]=>
  86.                 string(4) "94.9"
  87.                 ["ЦенаМинимальная"]=>
  88.                 string(3) "110"
  89.                 ["ЦенаОптовая"]=>
  90.                 string(3) "120"
  91.               }
  92.             }
  93.  


Необходимо занести в mysql древовидную структуру и товары в другую таблицу
желательно хороший пример, заранее благодарю
(Добавление)
прочитал так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $file=simplexml_load_file("1.xml");
  3.                 var_dump($file);
  4.  
 
My status
 Top
LIME
Отправлено: 06 Июня, 2014 - 11:35:37
Post Id


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


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


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




запись в дерево
http://www[dot]getinfo[dot]ru/article610[dot]html для инфы что это есть такое вообще
http://toster[dot]ru/q/66174
 
 Top
3d_killer
Отправлено: 06 Июня, 2014 - 11:45:35
Post Id



Участник


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


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




не мне бы как его разбирать нормально (дерево используется другого вида)
например вот я обращаюсь к верхнему уровню
PHP:
скопировать код в буфер обмена
  1. $file=simplexml_load_file("1.xml");
  2. foreach($file as $key => $value)
  3.         {
  4.                 if($key=='Группа'){echo $value['Код']."<br>";}
  5.                 else{echo $value['Наименование']."<br>";}
  6.         }

понятно что нужно использовать рекурсию, но я не знаю как обратиться к дочернему уровню группы и т.д.
дальше запись в БД нужную я сделаю с этим проблем нет
 
My status
 Top
LIME
Отправлено: 06 Июня, 2014 - 13:52:35
Post Id


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


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


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




ты будешь смеяться но
$value->Группа;
 
 Top
3d_killer
Отправлено: 06 Июня, 2014 - 14:16:16
Post Id



Участник


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


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




LIME извини так и не понял кодом можешь?
например второй уровень чтобы принцип понять
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($file as $key => $value)
  3.         {
  4.                 if($key=='Группа')
  5.                         {
  6.                                 echo $value['Код']."<br>";
  7.                                 foreach(???)
  8.                                         {
  9.                                                 if($key1=='Группа'){echo $value1['Код']."<br>";}
  10.                                                 else{echo $value1['Наименование']."<br>";}
  11.                                         }
  12.                         }
  13.                 else
  14.                         {
  15.                                 echo $value['Наименование']."<br>";
  16.                         }
  17.         }
  18.  

(Отредактировано автором: 06 Июня, 2014 - 14:20:03)

 
My status
 Top
LIME
Отправлено: 06 Июня, 2014 - 14:20:55
Post Id


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


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


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




ты снова будешь смеяться но таки $value->Группа
это массив вложенных объектов
по нему пробежаться и по каждому из них еще разок чтоб действия с ключами повторить
(Добавление)
2 фырыча
 
 Top
3d_killer
Отправлено: 06 Июня, 2014 - 14:22:21
Post Id



Участник


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


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




PHP:
скопировать код в буфер обмена
  1. foreach($value->'Группа' as $key => $value)

ошибка
 
My status
 Top
LIME
Отправлено: 06 Июня, 2014 - 14:25:00
Post Id


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


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


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




а ну да
чет непонятно зачем тебе по ключам бегать если ты и так знаешь какие они есть у тебя
ну тогда просто 2ой уровень в ложи в if($key1=='Группа')
и тогда просто $value
(Добавление)
и 2 фАрыча
(Добавление)
особо не вникая вот как-то так типа того псевдокод
PHP:
скопировать код в буфер обмена
  1. $file=simplexml_load_file("1.xml");
  2.  
  3. echo $file->Группа['Код'];
  4. echo $file->Элемент['Наименование'];
  5.  
  6. foreach($file->Группа as $value)
  7. {
  8.         output($value);//и тут по новой вывели и сами себя для каждого запросили
  9. }
 
 Top
3d_killer
Отправлено: 06 Июня, 2014 - 14:33:17
Post Id



Участник


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


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




Вот спасибо за терпение, понял, работает
(Добавление)
если кому надо могу дать обработку, написал для 1С старой версии 7.7 выгружает номенклатуру с каталогами и со всеми видами цен в формат xml.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB