当我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],但是它只是打印出相同的内容(即我发布的最后一个代码片段)。

最佳答案

print_r上使用var_dumpSimpleXMLElement时获得的表示形式与内部结构无关。例如,没有属性@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->message,只需执行echo $xmlObject->result->message即可。那会自动将SimpleXmlElement转换为字符串。

    关于php - 访问SimpleXMLElement对象的某些属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9691847/

    10-10 02:20