2012-03-13 5 views
7

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

ответ

7

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

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

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

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

+5

+1 просто набрал аналогичный ответ. Стоит отметить, что если вы хотите присвоить строковое значение элемента переменной, вам нужно явно передать его в строку. например '$ message = (строка) $ xmlObject-> result-> message' – vascowhite

Смежные вопросы