web-dev-qa-db-ja.com

PHP cURL、XML応答の抽出

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

35
Rakesh
<?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";
}
113
Alan Storm

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

8
arkleyjoe

例:

<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;
?>

ブラウザでの出力:Ship of Nomads

クレジット: http://blog.teamtreehouse.com/how-to-parse-xml-with-php5

3
limitcracker
$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
Dipanjan

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

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

2
dusoft

単純な読み込みxmlファイル..

$xml = @simplexml_load_string($retValuet);

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

?>

1
Ganesh