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
Форумы портала PHP.SU :: Версия для печати :: Не работает attributes() при работе с XML
Форумы портала PHP.SU » » Вопросы новичков » Не работает attributes() при работе с XML

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

1. Exponat - 26 Мая, 2017 - 16:47:49 - перейти к сообщению
Всем привет.
Структура 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" } }

Пробую дотянуться до атрибутов:
PHP:
скопировать код в буфер обмена
  1. var_dump($xml->ITEM[0]->attributes());

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


Что я делаю не так? Подскажите? Как достать атрибуты?
2. andrewkard - 26 Мая, 2017 - 17:20:29 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($xml->ITEM[0]->attributes() as $a => $b) {
  3.     echo $a,'="',$b,"\"\n";
  4. }
  5.  
3. Мелкий - 26 Мая, 2017 - 17:21:50 - перейти к сообщению
То место, где и до появления __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);

Реально атрибуты доступны
4. andrewkard - 26 Мая, 2017 - 17:23:59 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $attributes = $xml->ITEM[0]->attributes();
  3.  
  4. echo (string)$attributes['Login'];
  5.  
5. Exponat - 26 Мая, 2017 - 17:29:29 - перейти к сообщению
Спасибо!

 

Powered by ExBB FM 1.0 RC1