私は次のxmlを持っています:
<CallOverview>
<Calls Count="2">
<Call CallType="LandLine" Customer="this account" StartTime="2013-09-17 20:21:19 (UTC)" Destination="NL" Duration="00:00:05" Charge="0.045" CallId="158263673"/>
<Call CallType="Mobile" Customer="this account" StartTime="2013-09-17 20:18:34 (UTC)" Destination="US" Duration="00:00:26" Charge="0.101" CallId="158263381"/>
</Calls>
<MoreData>No more data available</MoreData>
</CallOverview>
次のように XML を取得します。
function get_xml($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
};
必要に応じて XML を受け取りましたが、正しい方法でデータを抽出することができません。
$xml=simplexml_load_string ( get_xml($url_post) ) ;
echo $xml->getName() . "<br>";
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br>";
foreach($child->children() as $subchild)
{
echo $subchild->getName() . ": " . $subchild . "<br>";
$role = array($subchild->attributes());
foreach($subchild as $key => $value) {
echo "$role $key $value";
}
}
}
次の結果が得られます。
Calls:
Call:
Call:
MoreData: No more data available
私は試した:
foreach($xml->Call[0]->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
しかし、次のエラーが表示されます。
Fatal error: Call to a member function attributes() on a non-object
また、呼び出しが行われていない場合、Call 要素はありません。xml が初めてなので、child の下に child を使用できるかどうかわかりません。