Когда I 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]
, но он просто распечатывает то же самое (т. $xmlObject->result->message[0]
Последний фрагмент кода, который я опубликовал).
Представление, которое вы получаете при использовании print_r
или var_dump
в SimpleXMLElement
имеет очень мало общего с тем, как он структурирован внутри. Например, нет свойства @attributes
вы можете получить доступ с помощью $element['@attributes']['uri']
. Вы просто делаете $element['uri']
Это просто так, как есть. Объекты SimpleXmlElement
ведут себя по-разному. Перед использованием SimpleXml ознакомьтесь с примерами в Руководстве по PHP:
Чтобы понять реализацию в деталях, вам нужно будет посмотреть исходный код:
Чтобы напечатать сообщение $xmlObject->result->message
вы просто выполняете echo $xmlObject->result->message
. Это приведет к автоматическому SimpleXmlElement
элемента SimpleXmlElement
в строку.