У меня есть ключ доступа к API, который позволяет мне получать данные о продуктах (например, цена, описание и т.д.).
Я знаю о двух ручных способах использования этого ключа:
1) Используйте аддон Firefox "изменить заголовки", вставьте ключ в заголовки, а затем введите URL-адрес, который даст XML файл (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
?
(Я спрашиваю об этом, потому что позже я хочу, чтобы мой сервер делал такие запросы, как это, и обновлял мою собственную базу данных с текущими значениями этих полей).
Это то, что 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 (включая пространства имен и т.д.).
echo simplexml_load_string(price)
?
print_r()
в вашем вопросе (просто отредактируйте его).