2013-07-31 4 views
0

simplexml_load_string() оленья кожа, кажется, работает формы для следующего XMLPHP XML Parser simplexml_load_string

"<?xml version="1.0" encoding="UTF-8"?> 
<Chat_vailable queue="IBIN" locale="gn">Hide</Chat_vailable>" 

$result = simplexml_load_string($response->data) 

[@attributes] 
    queue -> IBIN 
    locale->gn 

выше XML является частью ответа так, когда получите результат он содержит только атрибуты

$ результата является объект SimpleXMLElement и имеет только массив атрибутов

У него нет ничего, что связано с «Chat_valiable» или HIDE.

Может кто-нибудь помочь, пожалуйста

+1

'Chat_vailable' является [корневым узлом] (http://stackoverflow.com/questions/2811797/get-root-node-of-xml-doc-using-simplexml). –

ответ

0

выполнения var_dump на $result выход этого. Таким образом, он получает как атрибуты, так и контент.

object(SimpleXMLElement)#1 (2) { 
    ["@attributes"]=> 
    array(2) { 
    ["queue"]=> 
    string(4) "IBIN" 
    ["locale"]=> 
    string(2) "gn" 
    } 
    [0]=> 
    string(4) "Hide" 
} 

код, который производит вывод выше следующим

$xml = <<<EOF 
<?xml version="1.0" encoding="UTF-8"?> 
<Chat_vailable queue="IBIN" locale="gn">Hide</Chat_vailable> 
EOF; 

$result = simplexml_load_string($xml); 

var_dump($result); 
0
$xml = simplexml_load_string($x); // assume XML in $x 
echo "queue: $xml[queue], locaele: $xml[locale], value: $xml"; 

выход будет:

queue: IBIN, locaele: gn, value: Hide 

видеть это работает: https://eval.in/39965

1

Я не уверен, что вы используете для проверки объекта e, я предполагаю, что print_r, но что бы это ни было, не полагайтесь на него. :)

SimpleXML не создает реального объекта PHP со свойствами для всего в документе XML, он предоставляет объектно-подобный API, связанный с внутренним анализируемым представлением.

Так что в вашем случае:

  • Chat_vailable является корневым узлом, поэтому представляется самой $result (SimpleXML не имеет отдельного объекта для «документа», так что нет ничего «выше» корневой элемент)
  • Hide является текстовым содержанием этого узла, поэтому можно получить с помощью строки гипса: (string)$result (или просто echo $result, так что бросает в строку автоматически)
  • атрибутов queue и locale может быть-доступ СЕПГ с использованием нотации массивов (приведение к строке является хорошей привычкой, чтобы избежать прохождения вокруг объектов, которые могут запутать позже функции): (string)$result['queue'], (string)$result['locale']

Если вы хотите, чтобы осмотреть весь контент, доступный через объект SimpleXML, есть посмотрите на these dedicated SimpleXML debug functions.