我知道这个问题的答案非常简单,但这是我用谷歌/ SO无法解决的问题之一,因为它处理的是难以搜索的角色。我正在使用php从rest api获取xml。我已经使用了simple_xml_load_string($ string),现在当我print_r时,我得到了这个:
SimpleXMLElement Object
(
[Seaports] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Id] => 8675309
[Name] => CHORIZON WIRELUSS
)
[Statistics] => SimpleXMLElement Object
(
[Clicks] => 194
)
等
假设我想要
$ XML->海港[0] - > @属性[ 'ID']
echo $xml->Seaports[0]->@attributes['Id'];
给我一个语法错误和
echo $xml->Seaports[0]->attributes['Id'];
我做错了什么?
答案 0 :(得分:1)
这是一个SimpleXMLElement对象。 '@attributes'行是XML元素的属性的内部表示。使用SimpleXML的函数从此对象获取数据,而不是直接与其进行交互。或者,一种hacky方式是将它转换为这样的数组:
$atts_object = $node->attributes(); //- get all attributes, this is not a real array
$atts_array = (array) $atts_object; //- typecast to an array
//- grab the value of '@attributes' key, which contains the array your after
$atts_array = $atts_array['@attributes'];
var_dump($atts_array);