PHP cURL, извлеките ответ XML - PullRequest
       10

PHP cURL, извлеките ответ XML

35 голосов
/ 18 февраля 2009

Я вызываю метод PHP cURL на сервере, и ответ имеет тип XML. cURL сохраняет вывод (после удаления тегов) в переменной скалярного типа. Есть ли способ сохранить его в объекте / хэше / массиве, чтобы его было легко проанализировать?

Ответы [ 6 ]

111 голосов
/ 19 февраля 2009
<?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";
}
8 голосов
/ 25 октября 2011

Просто добавьте header('Content-type: application/xml'); перед вашим эхом ответа XML, и вы увидите страницу XML.

3 голосов
/ 21 сентября 2016
$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);
3 голосов
/ 04 мая 2013

Пример:

<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

2 голосов
/ 18 февраля 2009

нет, CURL ничего не имеет с разбором XML, он ничего не знает о возвращаемом контенте. он служит прокси для получения контента. вам решать, что с этим делать.

используйте JSON, если это возможно (и json_decode) - проще работать, если не возможно, использовать любую XML-библиотеку для синтаксического анализа, такую ​​как DOMXML: http://php.net/domxml

1 голос
/ 22 июля 2015

простой загрузочный XML-файл ..

$xml = @simplexml_load_string($retValuet);

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

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...