当我print_r()变量$xmlObject引用的Simple
XMLElement对象时,我看到以下结构:
SimpleXMLElement Object ( [@attributes] => Array ( [uri] => /example ) [result] => SimpleXMLElement Object ( [message] => Record(s) added successfully [recorddetail] => Array ( [0] => SimpleXMLElement Object ... ) ) )
注意$xmlObject-> result->消息属性看起来好像只是一个字符串.但是,如果我执行print_r($xmlObject-> result-> message),我会得到以下内容:
SimpleXMLElement Object ( [0] => Record(s) added successfully )
所以在这一点上我很困惑.为什么$xmlObject-> result->消息在这种情况下被识别为SimpleXMLElement对象的实例,当打印完整的$xmlObject的结果不建议这样做?
我如何实际访问此值?我已经尝试了$xmlObject-> result-> message [0],但它只打印出相同的东西(即我发布的最后一个代码片段).
在SimpleXMLElement上使用print_r或var_dump时获得的表示与它在内部的结构方式几乎没有关系.例如,没有属性@attributes你可以用$element [‘@ attributes’] [‘uri’]访问.你只需要$element [‘uri’]
这就是它的方式. SimpleXmlElement对象的行为不同.在使用SimpleXml之前,请确保阅读PHP手册中的示例:
> http://php.net/manual/en/simplexml.examples-basic.php
要详细了解它的实现,您必须查看源代码:
> http://lxr.php.net/opengrok/xref/PHP_TRUNK/ext/simplexml/simplexml.c
要打印$xmlObject-> result->消息,您只需回显$xmlObject-> result->消息.这将自动将SimpleXmlElement自动转换为字符串.