2015-12-02 19 views
1

我有一個API訪問鍵,它允許我獲得有關產品的數據(如價格,描述等)。如何僅從XML輸出請求特定字段?

我知道2點手動的方式來使用此鍵:

1)使用「修改標題」火狐插件,插入在報頭中的密鑰,然後鍵入將產生一個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字段顯示? (我問這是因爲後來,我會希望我的服務器發出這樣的自動請求,並用這些字段的當前值更新我自己的數據庫)。

+0

使用SimpleXML。 – Jan

回答

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)'? – rockyraw

+0

查看我更新的答案,並在問題中顯示'print_r()'輸出(簡單編輯它)。 – Jan

+0

謝謝,但'_toString()'是什麼?我得到一個致命的錯誤,如果我保留它。如果我刪除它,我確實得到了價值。 – rockyraw

相關問題