Как запросить только определенные поля из вывода XML?

1

У меня есть ключ доступа к 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?

(Я спрашиваю об этом, потому что позже я хочу, чтобы мой сервер делал такие запросы, как это, и обновлял мою собственную базу данных с текущими значениями этих полей).

  • 0
    С SimpleXML.
Теги:
curl

1 ответ

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 (включая пространства имен и т.д.).

  • 0
    Чтобы получить доступ к API, мне нужно использовать определенные заголовки с моим ключом, поэтому я, вероятно, должен свернуться, верно? так что бы точную строку я должен добавить? echo simplexml_load_string(price) ?
  • 0
    Смотрите мой обновленный ответ и покажите вывод print_r() в вашем вопросе (просто отредактируйте его).
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню