Доступ к определенным свойствам объекта SimpleXMLElement


Когда я 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], но он просто выводит то же самое (т.Е. Последний фрагмент кода, который я опубликовал).

Author: hakre, 2012-03-14

1 answers

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

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

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

Чтобы напечатать $xmlObject->result->message, вы просто делаете echo $xmlObject->result->message. Это приведет к автоматической передаче SimpleXmlElement в строку.

 7
Author: Gordon, 2012-03-13 21:02:10