PHP cURL,提取一个XML响应

我在服务器上调用PHP cURL方法,响应是XMLtypes。 cURL在标量typesvariables中保存输出(在删除标签后)。 有没有办法把它存储在一个对象/哈希/数组,以便于parsing?

<?php function download_page($path){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$path); curl_setopt($ch, CURLOPT_FAILONERROR,1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 15); $retValue = curl_exec($ch); curl_close($ch); return $retValue; } $sXML = download_page('http://alanstorm.com/atom'); $oXML = new SimpleXMLElement($sXML); foreach($oXML->entry as $oEntry){ echo $oEntry->title . "\n"; } 

只需添加header('Content-type: application/xml'); 在回应XML响应之前,您将看到一个XML页面。

不,CURL没有parsingXML的东西,它不知道返回的内容。 它作为获取内容的代理。 这取决于你如何处理它。

如果可能的话使用JSON(和json_decode) – 如果不可能的话,使用任何XML库进行parsing(比如DOMXML)更容易: http ://php.net/domxml

例:

 <songs> <song dateplayed="2011-07-24 19:40:26"> <title>I left my heart on Europa</title> <artist>Ship of Nomads</artist> </song> <song dateplayed="2011-07-24 19:27:42"> <title>Oh Ganymede</title> <artist>Beefachanga</artist> </song> <song dateplayed="2011-07-24 19:23:50"> <title>Kallichore</title> <artist>Jewitt K. Sheppard</artist> </song> 

然后:

 <?php $mysongs = simplexml_load_file('songs.xml'); echo $mysongs->song[0]->artist; ?> 

在浏览器上输出: 游牧民族的船只

学分: http : //blog.teamtreehouse.com/how-to-parse-xml-with-php5

 $sXML = download_page('http://alanstorm.com/atom'); // Comment This // $oXML = new SimpleXMLElement($sXML); // foreach($oXML->entry as $oEntry){ // echo $oEntry->title . "\n"; // } // Use json encode $xml = simplexml_load_string($sXML); $json = json_encode($xml); $arr = json_decode($json,true); print_r($arr); 

简单加载xml文件

 $xml = @simplexml_load_string($retValuet); $status = (string)$xml->Status; $operator_trans_id = (string)$xml->OPID; $trns_id = (string)$xml->TID; 

?>