Я вызываю метод PHP cURL на сервере, а ответ - это тип XML. cURL сохраняет результат (после удаления тегов) в переменной скалярного типа. Есть ли способ сохранить его в массиве object/hash/array, чтобы он легко разбирался?
PHP cURL, извлечение XML-ответа
Ответ 1
<?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";
}
Ответ 2
Просто добавьте header('Content-type: application/xml');
перед вашим эхом ответа XML, и вы увидите страницу XML.
Ответ 3
нет, CURL не имеет ничего с разбором XML, он ничего не знает о возвращенном содержимом. он служит прокси для получения контента. это зависит от вас, что с ним делать.
используйте JSON, если это возможно (и json_decode) - проще работать, если это невозможно, использовать любую XML-библиотеку для парсина, такую как DOMXML: http://php.net/domxml
Ответ 4
Пример:
<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
Ответ 5
$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);
Ответ 6
файл простой загрузки xml.
$xml = @simplexml_load_string($retValuet);
$status = (string)$xml->Status;
$operator_trans_id = (string)$xml->OPID;
$trns_id = (string)$xml->TID;
? >