从PHP CURL解析XML响应

时间:2012-01-08 14:33:27

标签: php xml curl twilio

我正在尝试使用返回以下结构的API

    <TwilioResponse>
     <Call>
     <Sid>CAe1644a7eed5088b159577c5802d8be38</Sid>
     <DateCreated>Tue, 10 Aug 2010 08:02:17 +0000</DateCreated>
     <DateUpdated>Tue, 10 Aug 2010 08:02:47 +0000</DateUpdated>
     <ParentCallSid/>
     <AccountSid>AC5ef872f6da5a21de157d80997a64bd33</AccountSid>
     <To>+14153855708</To>
     <From>+14158141819</From>
     <PhoneNumberSid></PhoneNumberSid>
     <Status>completed</Status>
     <StartTime>Tue, 10 Aug 2010 08:02:31 +0000</StartTime>
     <EndTime>Tue, 10 Aug 2010 08:02:47 +0000</EndTime>
     <Duration>16</Duration>
     <Price>-0.03000</Price>
     <Direction>outbound-api</Direction>
    </Call>
   </TwilioResponse>

我可以通过使用CURL来获取XML数据,其效果如下:

    $handle = curl_init();
    curl_setopt($handle, CURLOPT_URL, $base_url."/Accounts/{$accountSid}/Calls");
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($handle);
    curl_close($handle);

然而,一旦我将数据作为XML返回,我尝试将其放入simpleXML元素并将其返回到调用此函数的页面,如下所示:

    $xml = new SimpleXmlElement($response);
    if($xml)
{
  return $xml;
}
else
{
  return false;
}

当我将XML返回到调用该函数的页面时,如果我执行print_r()但是当我尝试执行foreach时,我可以看到很多simpleXMLElement对象($ xml-&gt; TwilioResponse-&gt;打电话给$ call)我什么都没得到,似乎我根本无法真正钻取数据。

有人可以帮助我并指出我错在哪里吗?在过去的几个小时里,它一直让我疯狂。

谢谢!

1 个答案:

答案 0 :(得分:2)

$xml->TwilioResponse->call看起来有两个问题。

  1. $xml包含TwilioResponse元素(“文档元素”),$xml->TwilioResponse不正确。
  2. (XML和)SimpleXML元素名称区分大小写,call应为Call
  3. $xml->Call一个旋转。