38

サーバーで PHP cURL メソッドを呼び出していますが、応答は XML タイプです。cURL は、(タグを削除した後) 出力をスカラー型変数に保存しています。解析しやすいように、オブジェクト/ハッシュ/配列に格納する方法はありますか?

4

6 に答える 6

117
<?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";
}
于 2009-02-18T23:08:29.827 に答える
8

XML 応答のエコーの前に追加するだけheader('Content-type: application/xml');で、XML ページが表示されます。

于 2011-10-25T14:17:39.397 に答える
2
$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);
于 2016-09-21T16:10:49.717 に答える
2

いいえ、CURL には XML の解析機能はありません。返されるコンテンツについては何も知りません。コンテンツを取得するためのプロキシとして機能します。それをどうするかはあなた次第です。

可能であれば JSON を使用 (および json_decode) - 操作が簡単です。不可能な場合は、DOMXML などの構文解析用の XML ライブラリを使用します: http://php.net/domxml

于 2009-02-18T16:28:19.023 に答える