Подтвердить что ты не робот

PHP cURL, извлечение XML-ответа

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

4b9b3361

Ответ 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;

? >