我有一个客户端服务器返回以下(奇怪的)XML响应;如何访问每个键:值对?
$xml = '<?xml version="1.0"?>
<response>
<string key="__status">success</string>
<string key="id">1000</string>
<string key="mask">9999</string>
</response>';
我希望以下内容可行,但似乎没有。
$test = new SimpleXMLElement($xml);
echo "Mask: " . $xml->response->mask; // Mask: 9999
答案 0 :(得分:3)
如果您想要特定元素,可以使用XPath:
$matches = $test->xpath('//string[@key="mask"]');
(这需要PHP 5.2)
这会给你:
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[key] => mask
)
[0] => 9999
)
)
如果您想要所有元素,则必须遍历所有string
个元素并访问其文本和key
属性:
$items = array();
foreach($test->string as $item) {
$items[(string) $item->attributes()->key] = (string) $item;
}
给出:
Array
(
[__status] => success
[id] => 1000
[mask] => 9999
)
答案 1 :(得分:2)
<pre>
<?php
$xml = '<?xml version="1.0"?>
<response>
<string key="__status">success</string>
<string key="id">1000</string>
<string key="mask">9999</string>
</response>';
$test = new SimpleXMLElement($xml);
echo "Mask = ".$test->string[2];
?>
</pre>
这是工作代码。
答案 2 :(得分:1)
如果我的内存服务器{right} simplexml
是扩展程序。你确定安装好了吗?顺便说一下,在PHP 5.0中添加了simplexml
,因此请确保您没有运行较低版本