0

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 相关的任何内容。

有人可以帮忙吗

4

3 回答 3

1

我不确定你用什么来检查那里的物体,我猜print_r,但不管它是什么,都不要依赖它。:)

SimpleXML 不会为 XML 文档中的所有内容创建具有属性的真正 PHP 对象,它提供链接到内部已解析表示的类对象 API。

所以在你的情况下:

  • Chat_vailable是根节点,因此由$result它自己表示(SimpleXML 没有单独的“文档”对象,因此根元素“上方”没有任何内容)
  • Hide是该节点的文本内容,因此可以使用字符串转换访问:((string)$result或只是echo $result,因为它会自动转换为字符串)
  • 属性queuelocale可以使用数组表示法访问(转换为字符串是一个好习惯,以避免传递可能会混淆后续函数的对象)(string)$result['queue']:,(string)$result['locale']

如果您想通过 SimpleXML 对象检查可用的全部内容,请查看这些专用的 SimpleXML 调试函数

于 2013-07-31T11:07:29.817 回答
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

于 2013-07-31T08:26:32.503 回答
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);
于 2013-07-31T02:31:56.077 回答