php - 解析来自 PHP CURL 的 XML 响应

标签 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(),我可以看到很多 simpleXMLElement 对象,但是当我尝试执行 foreach($xml->TwilioResponse->call as $call) 我什么也没得到,而且我似乎根本无法深入研究数据。

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

谢谢!

最佳答案

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

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

试一试 $xml->Call

关于php - 解析来自 PHP CURL 的 XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778360/

相关文章:

html - 在 xsl :apply-templates tag 中正确使用 xpath 的 "select="属性

xml - 如何在 XML 文件中添加换行符(换行符)?

.net - 什么可能导致空白 XML 文件?

php cURL 返回全部小写

spring-boot - Spring Boot Actuator 空响应

PHP + curl + TLS 1.2

php - new self(); 是什么意思?在 PHP 中是什么意思?

javascript - HTML 选择表单 - 如何触发 "dynamically generated option"

php - 如何在共享服务器上配置 GeoIP?

php - 是否可以在 PHP 对象的属性中存储一个函数?