访问SimpleXMLElement对象的某些属性

时间:2012-03-13 20:46:05

标签: php xml simplexml

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

1 个答案:

答案 0 :(得分:7)

print_r上使用var_dumpSimpleXMLElement时获得的表示与其内部结构的关系几乎没有什么关系。例如,您无法使用@attributes访问属性$element['@attributes']['uri']。你只需做$element['uri']

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

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

要打印$xmlObject->result->message,您只需echo $xmlObject->result->message。这会将SimpleXmlElement自动加入字符串。