处理xml / php中的@(at)符号

时间:2013-04-30 22:33:48

标签: php xml

我知道这个问题的答案非常简单,但这是我用谷歌/ 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'];

我做错了什么?

1 个答案:

答案 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);