Как получить значения элементов xml?
У меня есть некоторые 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
)
)
)
)
)
Ответы
Ответ 1
Отъезд Доступ к @attribute из SimpleXML, особенно комментарий об ошибке ввода var_dump
(print_r
) объектов SimpleXML.
Тем не менее, IIRC в вашем примере должно работать следующее:
$data->{'parent'}->link[0]['href']
(То есть к атрибутам можно получить доступ с использованием стандартного обозначения массива - это определенно работает с отдельными элементами, не уверен, работает ли он с дополнительным индексом в коллекции элементов.)
Ответ 2
Не используйте print_r() для проверки элемента SimpleXMLElement. Вместо этого просто посмотрите на XML. Доступ к детям осуществляется с помощью нотации объектов ->name
, и доступ к атрибутам осуществляется с использованием нотации массива ['name']
.
В вашем случае, я думаю, правильный способ доступа к этому атрибуту был бы
$data->parent->link[0]['href']