У меня есть некоторые XML-данные, и я пытаюсь получить доступ к некоторым элементам. Структура данных приведена ниже (с использованием print_r ($ data)). Я могу получить $data->{'parent'}->title
, он работает, но если я попытаюсь получить значение href, используя $data->{'parent'}->link[0]->{'@attributes'}->href
.. он не работает .. любые идеи?
благодаря
SimpleXMLElement Object ( [@attributes] => Array ( [children] => 29 [modules] => 0 ) [title] => Test title [link] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [href] => data.php?id=2322 [rel] => self [type] => application/xml ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [href] => data.php?id=2342 [rel] => alternate [type] => text/html ) ) ) [parent] => SimpleXMLElement Object ( [@attributes] => Array ( [children] => 6 [modules] => 0 ) [title] => Top [link] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [href] => /data.php?id=5763 [rel] => self [type] => application/xml ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [href] => /data.php?id=2342 [rel] => alternate [type] => text/html ) ) ) )
)
Проверьте доступ к @attribute из SimpleXML , особенно комментарий об var_dump
вывода var_dump
( print_r
) объектов SimpleXML.
Тем не менее, IIRC в вашем примере должно работать следующее:
$data->{'parent'}->link[0]['href']
(То есть к атрибутам можно получить доступ с использованием стандартного обозначения массива – это определенно работает с отдельными элементами, не уверен, работает ли он с дополнительным индексом в коллекции элементов.)
Не используйте print_r () для проверки элемента SimpleXMLElement. Вместо этого просто посмотрите на XML. Доступ к детям осуществляется с использованием нотации объекта ->name
и атрибуты, с помощью нотации массива ['name']
.
В вашем случае я предполагаю, что правильным способом доступа к этому атрибуту будет
$data->parent->link[0]['href']