simplexml_load_string()似乎不适用于以下xml
"<?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是响应的一部分,所以当得到结果时它只包含属性
$ result是SimpleXMLElement的一个对象,只有一个属性数组
它没有与“Chat_valiable”或HIDE相关的任何内容。
请一位有人帮忙
答案 0 :(得分:1)
我不确定你用它来检查那里的物体,我猜是print_r
,但不管它是什么,都不要依赖它。 :)
SimpleXML不会为XML文档中的所有内容创建具有属性的真实PHP对象,它提供了与内部解析表示相关联的类似对象的API。
所以在你的情况下:
Chat_vailable
是根节点,因此由$result
本身表示(SimpleXML没有“文档”的单独对象,因此根元素“上方”没有任何内容)Hide
是该节点的文本内容,因此可以使用字符串强制转换来访问:(string)$result
(或仅echo $result
,因为它会自动转换为字符串)queue
和locale
(转换为字符串是一个好习惯,以避免传递可能会混淆以后函数的对象):(string)$result['queue']
,{ {1}} 如果您想通过SimpleXML对象检查可用的完整内容,请查看these dedicated SimpleXML debug functions。
答案 1 :(得分: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);
答案 2 :(得分: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