2011-12-27 20 views
-1

我試圖檢索使用curl使用此代碼從一個API數據:使用數據

$xml_data = '<name>foobar%</name>'; 

$URL = "http://www.example.com/api/foobar.xml"; 

$ch = curl_init($URL); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data"); 
$output = curl_exec($ch); 
curl_close($ch); 

當我執行這個PHP腳本,一切運作良好,並返回正確的XML數據在我的瀏覽器中。我的問題是,我如何解析這些數據?

(如果你建議我做使用不同的方法,捲曲,整個事情,請隨時告訴我)

+0

參見[PHP的最佳XML分析器(http://stackoverflow.com/q/188414/693207)查看解析器列表。 – 2011-12-27 09:52:42

回答

0

檢查PHP docs for curl_exec function - 請注意,除非啓用CURLOPT_RETURNTRANSFER,否則返回值將爲真/假,在這種情況下,它將是調用的結果。

這裏有一個更新的例子,將返回在$output的數據,並通過curl_getinfo()獲得轉讓的細節:

$xml_data = 'foobar%'; 

$URL = "http://www.example.com/api/foobar.xml"; 

$ch = curl_init($URL); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data"); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

print_r($info); 
print_r($output);
+0

似乎是錯誤的謝謝你!這工作得很好,正是我所期待的 – 2011-12-30 23:39:05

0

你可以使用simplexml解析它

+0

好的,但我應該分析哪個$變量或URL? – 2011-12-27 10:23:58

+0

解析你的$輸出變量 – 2011-12-27 10:25:59

+0

我試過用simplexml,但它不起作用。 $輸出似乎是一個布爾值(用gettype測試它)。我該怎麼辦? – 2011-12-27 10:38:05

1

您可以使用下面樣的代碼。

$xml = simplexml_load_string($output); 

如果你需要通過它的節點,你可以簡單地通過下面的例子給出的那些。

例:

$imageFileName = $xml->Cover->Filename; 

如果你需要,你可以使用XPath爲好。 例如:

$nodes = $xml->xpath(sprintf('/lfm/images/image/sizes/size[@name="%s"]', 'extralarge')); 

祝你好運!

Prasad。

+0

謝謝。我用simplexml嘗試過,但它不起作用。 $輸出似乎是一個布爾值(用gettype測試它)。有任何想法嗎? – 2011-12-27 10:37:26

+0

請檢查您的XML文檔是否正確編碼並且有效。 – 2011-12-27 10:42:30

+0

我想API – 2011-12-27 17:00:25