XML:什么是“@attributes”节点

时间:2013-07-29 16:35:04

标签: php xml simplexml

我有一个SimpleXML对象,它有以下节点@attributes。这是从USPS获得的XML字符串simplexml_load_string()的结果。

$xml = 

SimpleXMLElement Object
(
    [@attributes] => Array
    (
        [CLASSID] => 3
    )

    [MailService] => Priority Mail Express 1-Day
    [Rate] => 19.10
)

我意识到你可以做以下事情

$temp = $xml->attributes();    // will return object with '@attributes' note
$temp = (array)$temp;    // now in array form
echo $temp['@attributes']['CLASSID'];    // prints 3

$xml->{'Rate'};    // will return the rate (19.10) as a string

是否有特殊原因,为什么@attributes需要CLASSID?为什么不让CLASSIDMailServiceRate相同?

1 个答案:

答案 0 :(得分:2)

节点的属性与其他节点/子节点的处理方式不同。 @attributes是指向属性内部表示的链接。

要访问属性,请使用

之类的内容
echo $xml->attributes['CLASSID']

正如IMSop在下面的评论中指出的,访问属性的更好方法是使用数组表示法。例如,

echo $xml['CLASSID']