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 :: Вопрос по тегу

 PHP.SU

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


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

> Описание: изъять данные из тега
eFusion
Отправлено: 25 Июля, 2013 - 13:16:09
Post Id


Новичок


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


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




Всем привет!
Есть xml:
...
<category ID="19944" parentID="21010">GENIUS</category>
<category ID="29248" parentID="00077">SHARP</category>
<category ID="20183" parentID="20945">4U</category>
<category ID="19562" parentID="20939">HEWLETT PACKARD</category>
...
Возможно ли вытащить ID="19944" parentID="21010" из каждого тега <category>?
 
 Top
esterio
Отправлено: 25 Июля, 2013 - 13:18:13
Post Id



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


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


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




 
 Top
eFusion
Отправлено: 25 Июля, 2013 - 13:24:03
Post Id


Новичок


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


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




Я понимаю, что simplexml:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $xml = simplexml_load_file('news.xml');
  3. $categories = $xml->categories->category;
  4. ?>
  5. <html xml:lang="en" lang="en">
  6. <head>
  7.         <title>Parse</title>
  8. </head>
  9. <body>
  10.  
  11. <h2><?php echo $categories; ?></h2>
  12.  
  13. <?php
  14. foreach ($xml->categories->category as $category) {
  15.         echo "<h3>".$category."</h3>";
  16. }
  17. ?>
  18. </body>
  19. </html>

И даже нашел ф-цию simplexml_load_string, но вопрос, я в цикле перебираю категории а еще и нужно перебирать аттрибуты. Как это в одном цикле реализовать?
 
 Top
OrmaJever Модератор
Отправлено: 25 Июля, 2013 - 13:29:28
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




напишите сюда что показывает


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
eFusion
Отправлено: 25 Июля, 2013 - 13:33:19
Post Id


Новичок


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


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




object(SimpleXMLElement)#1 (5) { ["categories"]=> object(SimpleXMLElement)#2 (1) { ["category"]=> array(1500) { [0]=> string(5) "MITAC" [1]=> string(7) "DIGITAL" [2]=> string(27) "Швейные машины" [3]=> string(73) "Аксессуары и чехлы для электронных книг" [4]=> string(44) "Для матричных принтеров" [5]=> string(6) "GARMIN" [6]=> string(71) "Дополнительные порты (IDE, SATA, IEEE1394, LPT, COM)" [7]=> string(10) "REAL POWER" [8]=> string(7) "MYSTERY" [9]=> string(27) "DVD-RAM, DVD-R/RW, DVD+R/RW" [10]=> string(20) "Клавиатуры" [11]=> string(7) "PHILIPS" [12]=> string(58) "Портативные рации и аксессуары"
а далее огромное кол-во такого же
 
 Top
soffrick
Отправлено: 25 Июля, 2013 - 13:45:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 379
Дата рег-ции: Май 2012  
Откуда: Россия, Москва


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




eFusion
самому то хоть читабельно?
(Добавление)
каша пишет:
Спойлер (Отобразить)

Цитата:
Спойлер (Отобразить)



в php оберни, чтоб отступы тоже были Улыбка

(Отредактировано автором: 25 Июля, 2013 - 13:59:49)



-----
Правильный вопрос - уже половина правильного ответа!

p.s. индусы повсюду, будьте осторожны!
 
 Top
eFusion
Отправлено: 25 Июля, 2013 - 13:56:23
Post Id


Новичок


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


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




Согласен:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [spoiler]object(SimpleXMLElement)#1 (5) {
  2.  ["categories"]=>
  3.   object(SimpleXMLElement)#2 (1) {
  4.    ["category"]=>
  5.     array(1500) {
  6.       [0]=>
  7.       string(5) "MITAC"
  8.       [1]=>
  9.       string(7) "DIGITAL"
  10.       [2]=>
  11.       string(27) "Швейные машины"
  12.       [3]=>
  13.       string(73) "Аксессуары и чехлы для электронных книг"
  14.       [4]=>
  15.       string(44) "Для матричных принтеров"
  16.       [5]=>
  17.       string(6) "GARMIN"
  18.       [6]=>
  19.       string(71) "Дополнительные порты (IDE, SATA, IEEE1394, LPT, COM)"
  20.       [7]=>
  21.       string(10) "REAL POWER"
  22.       [8]=>
  23.       string(7) "MYSTERY"
  24.       [9]=>
  25.       string(27) "DVD-RAM, DVD-R/RW, DVD+R/RW"
  26.       [10]=>
  27.       string(20) "Клавиатуры"[/spoiler]

(Добавление)
Если взять такой кусок xml:
<typicen>
<typcen ID="A000000001"> Розница</typcen>
<typcen ID="A000000002"> Мелкий опт</typcen>
<typcen ID="A000000003"> Крупный опт</typcen>
<typcen ID="A000000004"> Альтернатива</typcen>
</typicen>

Вытащить id не выходит:
PHP:
скопировать код в буфер обмена
  1.  <?PHP
  2. $xml = simplexml_load_file('news.xml');
  3. $categories = $xml->categories->category;
  4. ?>
  5. <html xml:lang="en" lang="en">
  6. <head>
  7.         <title>Parse</title>
  8. </head>
  9. <body>
  10.  
  11. <?PHP
  12. foreach ($xml->typicen->typcen as $typcen) {
  13.         $xmlString = simplexml_load_string($xml);
  14.         foreach ($xmlString->typcen[0]->attributes() as $idTypeCen) {
  15.                 echo "<h3>".$typcen.$idTypeCen."</h3>";
  16.         }
  17. }
  18. ?>
  19. </body>
  20. </html>

Где накосячил?
(Добавление)
Ну пните куда-нить - помощь нужна ваша

(Отредактировано автором: 25 Июля, 2013 - 15:36:13)

 
 Top
VenZell
Отправлено: 25 Июля, 2013 - 15:47:47
Post Id


Частый гость


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


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




PHP:
скопировать код в буфер обмена
  1. function findAttribute($xml, $tag, $attribute) {
  2.     if (!isset($xml) || !isset($tag) || !isset($attribute)) {
  3.         return false; //"Функции переданы не все параметры";
  4.     }    
  5.     $all_items = $xml->xpath('//' . $tag);
  6.     $items_total = count($all_items);
  7.     if ($items_total > 0) {
  8.         $i = 1;
  9.         foreach ($all_items as $item) {
  10.             $item_attributes = $item->attributes();
  11.             $subject = (string) $item_attributes[$attribute];
  12.             if (!empty($subject)) {
  13.                 $result[$i] = $subject;
  14.             }
  15.             ++$i;
  16.         }
  17.     } else {
  18.         return false; //"Во входном файле не найден тег {$tag}";
  19.     }
  20.     return isset($result) ? $result : false;
  21. }
  22.  
  23. $xml = simplexml_load_file('news.xml');
  24. $id = findAttribute($xml, 'category', 'ID'); //Все значения ID
  25. $parent_id = findAttribute($xml, 'category', 'parentID'); //Все значения parentID

(Отредактировано автором: 25 Июля, 2013 - 15:56:30)

 
 Top
eFusion
Отправлено: 25 Июля, 2013 - 15:56:52
Post Id


Новичок


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


Помог: 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