我有一个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
?为什么不让CLASSID
与MailService
或Rate
相同?
答案 0 :(得分:2)
节点的属性与其他节点/子节点的处理方式不同。 @attributes
是指向属性内部表示的链接。
要访问属性,请使用
之类的内容echo $xml->attributes['CLASSID']
正如IMSop在下面的评论中指出的,访问属性的更好方法是使用数组表示法。例如,
echo $xml['CLASSID']