simplexml_load_file parse [@attributes] => Array

2019-01-20 07:32发布

问题:

I am trying to parse this xml feed

[0] => SimpleXMLElement Object
            (
                [title] => Johannesburg in November
                [link] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [rel] => alternate
                                [type] => text/html
                                [href] => http://www.tompeters.com/dispatches/012120.php?rss=1
                            )

                    )

                [id] => tag:www.tompeters.com,2011://2.12120
                [published] => 2011-09-08T14:03:23Z
                [updated] => 2011-09-08T14:11:49Z
                [summary] => Tom will be giving a day-long presentation in November in Johannesburg, South Africa. Our friends at the Business Results Group...
                [author] => SimpleXMLElement Object
                    (
                        [name] => Shelley Dolley
                    )

                [category] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [term] => Announcements
                                [scheme] => http://www.sixapart.com/ns/types#category
                            )

                    )

                [content] => SimpleXMLElement Object
                    (
                        [@attributes] => Array
                            (
                                [type] => html
                            )

                    )

            )

my PHP code to do so is

$url = 'http://www.tompeters.com/atom.xml';
                $xml = simplexml_load_file($url);

                echo '<pre>';
                foreach($xml->entry as $entry){
                    echo $entry->title;
                    echo "<br />";
                    foreach ($entry->link->@attributes as $attr){
                        echo $attr->href;
                        echo "<br />";
                    }
                }

the problem is that the @attributes bit breaks the code..

How do i get that href link?

回答1:

The @ = attributes, so

foreach ($entry->link->attributes() ...

Official documentation

It seems you have some doubts over SimpleXML (based on your past question),
it might worth to read the SimplXML documentation for better understanding.

SO tags - https://stackoverflow.com/questions/tagged/simplexml?sort=votes



回答2:

http://php.net/manual/en/simplexmlelement.attributes.php

$entry->link->attributes()

Also there they can be accessed with [] operator - check next link http://www.impossible.co.in/blog/padya/accessuse-simplexmlelementattributes



回答3:

With SimpleXML, access to attributes is available through array-style syntax (or via attributes() as mentioned in other answers).

$entry->link['href'];

See: http://php.net/simplexml.examples-basic