如何解析XML键:值对

时间:2011-06-02 13:21:20

标签: php xml

我有一个客户端服务器返回以下(奇怪的)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

3 个答案:

答案 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,因此请确保您没有运行较低版本