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 :: Не работает attributes() при работе с XML

 PHP.SU

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


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

> Без описания
Exponat
Отправлено: 26 Мая, 2017 - 16:47:49
Post Id



Частый гость


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


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




Всем привет.
Структура xml:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <BUYERS>
  3.         <ITEM Login="test12" Name="Test"/>
  4.         <ITEM Login="Z33" Name="Z6755"/>
  5.         <ITEM Login="KP656" Name="KP55633"/>
  6. </BUYERS>

Считываю xml:
PHP:
скопировать код в буфер обмена
  1. $str = file_get_contents("http://site/Buyers.xml");
  2. $xml = new SimpleXMLElement($str);

Делаю предварительный просмотр:

Выводит:
CODE (htmlphp):
скопировать код в буфер обмена
  1. object(SimpleXMLElement)#101 (1) { ["@attributes"]=> array(2) { ["Login"]=> string(6) "test12" ["Name"]=> string(4) "Test" } }

Пробую дотянуться до атрибутов:

Выводится та же информация!
CODE (htmlphp):
скопировать код в буфер обмена
  1. object(SimpleXMLElement)#101 (1) { ["@attributes"]=> array(2) { ["Login"]=> string(6) "test12" ["Name"]=> string(4) "Test" } }


Что я делаю не так? Подскажите? Как достать атрибуты?
 
 Top
andrewkard
Отправлено: 26 Мая, 2017 - 17:20:29
Post Id


Участник


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($xml->ITEM[0]->attributes() as $a => $b) {
  3.     echo $a,'="',$b,"\"\n";
  4. }
  5.  
 
 Top
Мелкий Супермодератор
Отправлено: 26 Мая, 2017 - 17:21:50
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




То место, где и до появления __debugInfo() var_dump можно быть обмануть Нахмурился

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $xml = '<?xml version="1.0" encoding="UTF-8"?>
  4. <BUYERS>
  5.        <ITEM Login="test12" Name="Test"/>
  6.        <ITEM Login="Z33" Name="Z6755"/>
  7.        <ITEM Login="KP656" Name="KP55633"/>
  8. </BUYERS>';
  9.  
  10. $xml = simplexml_load_string($xml);
  11. var_dump((string) $xml->ITEM[0]->attributes()->Login);

Реально атрибуты доступны


-----
PostgreSQL DBA
 
 Top
andrewkard
Отправлено: 26 Мая, 2017 - 17:23:59
Post Id


Участник


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $attributes = $xml->ITEM[0]->attributes();
  3.  
  4. echo (string)$attributes['Login'];
  5.  
 
 Top
Exponat
Отправлено: 26 Мая, 2017 - 17:29:29
Post Id



Частый гость


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


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB