Подтвердить что ты не робот

Как получить значения элементов 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
                            )

                    )

            )

    )

)

4b9b3361

Ответ 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']