2011-05-31 49 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