I have some xml data and I am trying to access some elements. The structure of data
is as below (using print_r($data)).
I can get $data->{'parent'}->title
, it works but if I try to get value of href using
$data->{'parent'}->link[0]->{'@attributes'}->href
.. it doesnt work .. any ideas?
Thanks
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] =>开发者_如何学Python 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
)
)
)
)
)
Check out Accessing @attribute from SimpleXML, especially the comment on the misleading var_dump
(print_r
) output of SimpleXML Objects.
That said, IIRC the following should work in your example:
$data->{'parent'}->link[0]['href']
(That is, the attributes can be accessed using standard array notation - this definitely works on single elements, not sure if it works with the additional index into the element collection.)
Do not use print_r() to inspect a SimpleXMLElement. Instead, just look at the XML. Children are accessed using the object notation ->name
and attributes are accessed using the array notation ['name']
.
In your case, I guess the correct way to access this attribute would be
$data->parent->link[0]['href']
精彩评论