Доступ к определенным свойствам объекта SimpleXMLElement - PullRequest
7 голосов
/ 14 марта 2012

Когда я print_r() Объект SimpleXMLElement, на который ссылается переменная $xmlObject, я вижу следующую структуру:

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 Ответ

7 голосов
/ 14 марта 2012

Представление, которое вы получаете при использовании print_r или var_dump на SimpleXMLElement, имеет очень мало общего с его внутренней структурой.Например, нет свойства @attributes, к которому вы могли бы получить доступ $element['@attributes']['uri'].Вы просто делаете $element['uri']

Это просто так, как есть.SimpleXmlElement объекты ведут себя по-разному.Прежде чем использовать SimpleXml, убедитесь, что вы прочитали примеры в руководстве по PHP:

Чтобы понять, как это реализовать подробно, вам нужно взглянуть наисходный код:

Для печати $xmlObject->result->message достаточно просто echo $xmlObject->result->message.Это автоматически передаст SimpleXmlElement в строку.

...