当我print_r()
变量$xmlObject
引用的SimpleXMLElement对象时,我看到以下结构:
SimpleXMLElement Object
(
[@attributes] => Array
(
[uri] => /example
)
[result] => SimpleXMLElement Object
(
[message] => Record(s) added successfully
[recorddetail] => Array
(
[0] => SimpleXMLElement Object
...
)
)
)
注意$xmlObject->result->message
属性看起来只是一个字符串。但是,如果我print_r($xmlObject->result->message)
,我会得到以下内容:
SimpleXMLElement Object
(
[0] => Record(s) added successfully
)
所以在这一点上我很困惑。在这种情况下,为什么$xmlObject->result->message
被标识为SimpleXMLElement Object
的实例,而打印完整$xmlObject
的结果不建议这样做?
我如何实际访问此值?我已经尝试了$xmlObject->result->message[0]
,但它只打印出相同的内容(即我发布的最后一个代码段)。
答案 0 :(得分:7)
在print_r
上使用var_dump
或SimpleXMLElement
时获得的表示与其内部结构的关系几乎没有什么关系。例如,您无法使用@attributes
访问属性$element['@attributes']['uri']
。你只需做$element['uri']
这就是它的方式。 SimpleXmlElement
个对象表现不同。在使用SimpleXml之前,请务必阅读PHP手册中的示例:
要详细了解它的实现,你必须查看源代码:
要打印$xmlObject->result->message
,您只需echo $xmlObject->result->message
。这会将SimpleXmlElement
自动加入字符串。