2011-05-31 51 views
1

作爲學校項目的一部分,我正在呼叫學校的api。解析從GET請求中收到的XML

方法:GET 響應格式:XML

現在我用捲曲,使Web請求。

$ch=curl_init(); 
curl_setopt($ch,CURLOPT_URL,$url); 

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 

$data=curl_exec($ch); 

curl_close($ch); 

現在我該如何解析xml輸出以獲取我想要的數據?

希望這個問題是清楚的

+0

用PHP解析XML已經被問很多次:http://stackoverflow.com/search?q=parse+xml+php – 2011-05-31 13:45:05

回答

2

這取決於內容的確切性質,而且還取決於其結構。

基本知識是使用DOMDocument(或者,我不喜歡作爲API)simplexml解析文檔,然後使用DOM遍歷或XPath來查找您想要的內容。

一個例子可能是這樣的:

$dom = new DOMDocument; 
$dom->loadXML($data); // data from cURL request 

$xpath = new DOMXPath($dom); 

$names = $xpath->query('//student/name'); // find all name elements that are direct children of student elements 

foreach ($names as $name) { 
    echo $name->nodeValue; 
} 

你想確切的代碼依賴於XML的結構,你想擺脫它什麼樣的內容。

+0

錯誤: DOM文檔:: loadXML的()[domdocument.loadxml]:空字符串作爲輸入提供 – Saurabh 2011-05-31 14:01:13

+0

@Saurabh我的猜測是你提供一個空字符串。出於某種原因,您問題中的cURL請求不會返回數據。解決這個問題,然後再試一次。 – lonesomeday 2011-05-31 14:16:18

+0

設法使它工作。經過數小時的努力,我發現我沒有證書在本地機器上進行驗證,所以如果有人遇到問題,請添加:curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false; – Saurabh 2011-05-31 20:13:31