0

私は次の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 を使用できるかどうかわかりません。

4

1 に答える 1