如何仅从XML输出请求特定字段?

时间:2015-12-02 17:17:22

标签: php xml api curl

我有API的访问密钥,可以让我获取有关产品的数据(例如价格,描述等)。

我知道有两种手动方式可以使用此密钥:

1)使用"修改标题" firefox插件,在标头中插入密钥,然后键入将生成XML文件的URL(https://api.domain.com/search?parameter=something), 我会看到这样的输出树:

<manufacturer-name>SONY</manufacturer-name>  
<price>99.99</price>

另外还有20个领域。

2)使用以下代码的PHP文件:

$myHeaders = array("key: code");

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.domain.com/search?parameter=something");
curl_setopt($ch, CURLOPT_HTTPHEADER,$myHeaders);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);

$returnResult = curl_exec($ch);

if ($returnResult) {
    //parse HTTP Body to determine result of request
    if (stripos($returnResult,"Error Code ")) {
        // error occurred
        trigger_error($returnResult,E_USER_ERROR);
    }
    else{
        // success
        echo $returnResult;
    }
}

else{
    // connection error
    trigger_error(curl_error($ch),E_USER_ERROR);
}

curl_close($ch);

然后我看到了这个输出:

SONY 99.99

我的问题:

使用相同的PHP代码,我如何只请求显示price字段?

(我问这个是因为稍后,我会希望我的服务器发出这样的自动请求,并使用这些字段的当前值更新我自己的数据库。)

1 个答案:

答案 0 :(得分:1)

这是SimpleXML的用途:加载xml文件并解析它。

<?php
$myHeaders = array("key: code");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.domain.com/search?parameter=something");
curl_setopt($ch, CURLOPT_HTTPHEADER,$myHeaders);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);

$returnResult = curl_exec($ch);

// here the dom is generated
$xml = simplexml_load_string($returnResult);
print_r($xml);
// depending on your root element and xml tree:
// echo $xml->...->price->__toString();
?>

要获得更好的答案,请向我们展示精确的xml输出(包括命名空间等)。