访问SimpleXMLElement对象的某些属性

max*_*son 7 php xml simplexml

当我print_r()通过变量引用SimpleXMLElement对象时$xmlObject,我看到以下结构:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [uri] => /example
        )

    [result] => SimpleXMLElement Object
        (
            [message] => Record(s) added successfully
            [recorddetail] => Array
                (
                    [0] => SimpleXMLElement Object
                    ...
                )
        )
)
Run Code Online (Sandbox Code Playgroud)

注意该$xmlObject->result->message属性看起来像是一个字符串.但是,如果我这样做print_r($xmlObject->result->message),我会得到以下结果:

SimpleXMLElement Object
(
    [0] => Record(s) added successfully
)
Run Code Online (Sandbox Code Playgroud)

所以在这一点上我很困惑.为什么在这种情况下$xmlObject->result->message被识别为实例SimpleXMLElement Object,当打印完整的结果$xmlObject不建议这样做?

我如何实际访问此值?我试过$xmlObject->result->message[0],但它打印出相同的东西(即我发布的最后一个代码片段).

Gor*_*don 7

表示你使用时,print_rvar_dumpSimpleXMLElement已经很少用它做内部是如何构成的.例如,@attributes您也无法访问任何属性$element['@attributes']['uri'].你这样做$element['uri']

这就是它的方式.SimpleXmlElement对象表现不同.在使用SimpleXml之前,请确保阅读PHP手册中的示例:

要详细了解它的实现,您必须查看源代码:

要打印$xmlObject->result->message你就做echo $xmlObject->result->message.这将自动加密SimpleXmlElement到字符串.

  • +1只是输入一个类似的答案.值得指出的是,如果要将元素的字符串值赋给变量,则需要将其显式地转换为字符串.例如`$ message =(string)$ xmlObject-> result-> message` (5认同)