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]   

> Описание: Помогите с парсером XML
3d_killer
Отправлено: 27 Июля, 2012 - 10:31:04
Post Id



Участник


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


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




CODE (html):
скопировать код в буфер обмена
  1.         <row>
  2.                 <Code>00000000285</Code>
  3.                 <Description>Профилированный лист С8 (ОЦ-РОССИЯ-БЦ-0,7)</Description>
  4.                 <Price>268.55</Price>
  5.         </row>
  6.         <row>
  7.                 <Code>00000000286</Code>
  8.                 <Description>Профилированный лист С8 (ПЭ-РОССИЯ-9006-0,4)</Description>
  9.                 <Price>215</Price>
  10.         </row>
  11.         <row>
  12.                 <Code>00000000287</Code>
  13.                 <Description>Профилированный лист С8 (ПЭ-РОССИЯ-9006-ОН)</Description>
  14.                 <Price>240</Price>
  15.         </row>
  16.         <row>
  17.                 <Code>00000000288</Code>
  18.                 <Description>Профилированный лист С8 (ПЭ-РОССИЯ-9006-ПРЕМИУМ)</Description>
  19.                 <Price>285</Price>
  20.         </row>

есть такой xml загружается из файла, как его пропарсить чтобы занести данные значения в БД?

(Отредактировано автором: 27 Июля, 2012 - 10:32:26)

 
My status
 Top
EuGen Администратор
Отправлено: 27 Июля, 2012 - 10:37:17
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
3d_killer
Отправлено: 27 Июля, 2012 - 10:52:22
Post Id



Участник


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


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




прочитать я его прочитал а как разобрать в цикле на переменные?
 
My status
 Top
Toxa
Отправлено: 27 Июля, 2012 - 11:06:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


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

[+]




-----
Удобный сервис для хранения файлов
 
 Top
3d_killer
Отправлено: 27 Июля, 2012 - 11:15:42
Post Id



Участник


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


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




ну это то же самое непойму как организовать цикл, помогите плз...
 
My status
 Top
Toxa
Отправлено: 27 Июля, 2012 - 11:20:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


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

[+]


PHP:
скопировать код в буфер обмена
  1. $xml = simplexml_load_string($string);
  2.  
  3. foreach($xml->row as $row)
  4. {
  5.   echo $row->Code;
  6.   echo $row->Description;
  7.   echo $row->Price;
  8. }


-----
Удобный сервис для хранения файлов
 
 Top
3d_killer
Отправлено: 27 Июля, 2012 - 11:37:43
Post Id



Участник


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


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




Спасибо, а если у меня попадается группа и нет цены (PRICE) как это проверить чтобы не записывать в базу?
допустим
CODE (htmlphp):
скопировать код в буфер обмена
  1. <row>
  2.                 <Code>00000000002</Code>
  3.                 <Description>Гидро-пароизоляция</Description>
  4.                 <Price/>
  5.         </row>
  6.  

(Отредактировано автором: 27 Июля, 2012 - 11:42:14)

 
My status
 Top
Toxa
Отправлено: 27 Июля, 2012 - 11:42:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


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

[+]


PHP:
скопировать код в буфер обмена
  1. if(isset($row->Price)){
  2.   // Цена есть
  3. }

(Добавление)
в этом случае лучше так
PHP:
скопировать код в буфер обмена
  1. if(!empty($row->Price)){
  2.   // Цена есть
  3. }


-----
Удобный сервис для хранения файлов
 
 Top
3d_killer
Отправлено: 27 Июля, 2012 - 11:46:22
Post Id



Участник


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


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




if(!empty($row->Price)){
// Цена есть
}
подошло спасибо огромное!
 
My status
 Top
partos.k
Отправлено: 27 Июля, 2012 - 13:32:29
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2012  


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




Есть такой XML:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?xml version="1.0" encoding="windows-1251"?>
  3. <message>
  4. <datetime>
  5. <day>20120731</day>
  6. </datetime>
  7. <area>
  8. <names>Рынок</names>
  9.                 <frukt name="Яблоко">
  10.                
  11.                 <sort code="01">
  12.                 <value>125000</value>
  13.                 </sort>
  14.  
  15.                 <sort code="02">
  16.                 <value>5000</value>
  17.                 </sort>
  18.  
  19.                 </frukt>
  20.  
  21.  
  22.  
  23.                 <frukt name="Вишня">
  24.                
  25.                 <sort code="03">
  26.                 <value>200000</value>
  27.                 </sort>
  28.  
  29.                 <sort code="04">
  30.                 <value>15000</value>
  31.                 </sort>
  32.  
  33.                 </frukt>
  34.  
  35. </area>
  36. </message>
  37.  


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.   $xml = simplexml_load_file('2.xml');
  5.  
  6.  
  7.     foreach ($xml->area->frukt as $frukt)
  8.    {  $name = $frukt['name'];
  9.      $name = iconv ("UTF-8","windows-1251",$name);
  10.       echo "$name <br>";
  11.  
  12.                 foreach ($xml->area->frukt->sort as $sort) {
  13.  
  14.                 $code = $ sort ['code'];
  15.                $code = iconv ("UTF-8","windows-1251",$code);
  16.  
  17.                 $value = $sort ->value;
  18.                 $value = iconv ("UTF-8","windows-1251",$value);
  19.  
  20.                 echo " $code , $value <br>"; }
  21.  
  22.        }
  23.  
  24.    ?>
  25.  


получаю не то что хочется ((

Яблоко
01 , 125000
02 , 5000
Вишня
01 , 125000
02 , 5000

подскажите как правильно сформировать код что бы получить правильный результат:

Яблоко
01 , 125000
02 , 5000
Вишня
03 , 200000
04 , 15000
 
 Top
Toxa
Отправлено: 27 Июля, 2012 - 14:07:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


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

[+]


внутри второго цикла foreach
PHP:
скопировать код в буфер обмена
  1. $attr = $sort->attributes();
  2. $code = $attr->code;


-----
Удобный сервис для хранения файлов
 
 Top
partos.k
Отправлено: 27 Июля, 2012 - 15:51:10
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2012  


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




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  $xml = simplexml_load_file('2.xml');
  5.  
  6.    foreach ($xml->area->frukt as $frukt)
  7.  
  8.   {  $name = $frukt['name'];
  9.  
  10.     $name = iconv ("UTF-8","windows-1251",$name);
  11.  
  12.      echo "$name <br>";
  13.  
  14.  
  15.                foreach ($xml->area->frukt->sort as $sort) {
  16.  
  17.                $code = $sort ['code'];
  18.  
  19.                $code = iconv ("UTF-8","windows-1251",$code);
  20.  
  21.  
  22.  
  23.                $value = $sort->value;
  24.  
  25.                $value = iconv ("UTF-8","windows-1251",$value);
  26.  
  27.                $attr = $sort->attributes();
  28.                                 $code = $attr->code;
  29.  
  30.                echo " $code , $value, $attr <br>"; }
  31.  
  32.       }
  33.  


Яблоко
01 , 125000, 01
02 , 5000, 02
Вишня
01 , 125000, 01
02 , 5000, 02
результат тот же что и был
 
 Top
partos.k
Отправлено: 29 Июля, 2012 - 14:00:15
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2012  


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




блин ни кто не сталкивался с такой задачей ?(((
 
 Top
partos.k
Отправлено: 30 Июля, 2012 - 12:44:02
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2012  


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




всё решение нашлось, если кому надо, второй цикл должен быть:
 
 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