2016-07-06 3 views
0

Это мой объект xml. Я не могу разобрать это в массиве объектов в моем сценарии.Как получить атрибуты PHP SimpleXMLElement?

SimpleXMLElement Object(
[pagination] => SimpleXMLElement Object 
    (
     [@attributes] => Array 
      (
       [pageNumber] => 1 
       [pageSize] => 100 
       [totalAvailable] => 1 
      ) 

    ) 

[users] => SimpleXMLElement Object 
    (
     [0] => SimpleXMLElement Object 
      (
       [@attributes] => Array 
        (
         [id] => xxxxxxxx 
         [name] => xxxxx 
         [siteRole] => xxxxx 
         [lastLogin] => xxxxxx 
         [externalAuthUserId] => 
        ) 
      ) 
    ) 
) 

Вот мой PHP код:

foreach($xml2->users as $item) { 
$userName = $item->attributes()->name; 
} 

Я делаю что-то не так?

+0

Взгляните на пример № 5 здесь: http://php.net/manual/en/simplexml.examples-basic.php – ymas

+0

Спасибо! Глупая ошибка. Это сработало. –

ответ

1

Я смог решить проблему. Вот модифицированный код:

foreach($xml2->users[0] as $user) { 
    $userName = $user['name']; 
} 

Благодаря ymas он указал правильно.

+0

@StevenMoseley. Обе формы технически правильны, хотя я согласен с тем, что формат '['name']' опрятен. Это пограничное редактирование, тем не менее, потому что оно полностью изменяет ответ OP. – IMSoP

+0

@IMSoP хорошая точка, это было экстремальное редактирование. Однако исходный ответ вернет объект SimpleXMLElement, а не строковое значение, нет? –

+0

@StevenMoseley Нет, '$ foo-> attributes() -> bar' и' $ foo ['bar'] 'возвращает точно тот же самый объект. https://3v4l.org/a3tQo Если вы хотите получить строковое значение, вы должны указать его в строку, например. '$ userName = (строка) $ user ['name'];' – IMSoP

Смежные вопросы