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] => 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
)
)
)
)
)
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
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:
(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.)