Разбор XML-ответа от PHP CURL - PullRequest
3 голосов
/ 08 января 2012

Я пытаюсь использовать 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>

Я могу получить данные XML с помощью CURL, который прекрасно работает следующим образом:

    $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 на страницу, которая вызвалафункция, я могу увидеть много простых объектов XMLElement, если я делаю print_r (), но когда я пытаюсь сделать foreach ($ xml-> TwilioResponse-> call as $ call), я ничего не получаю, и это не похоже на то, что яна самом деле может углубиться в данные вообще.

Может ли кто-нибудь мне помочь и указать, где я ошибаюсь?Последние несколько часов это сводило меня с ума.

СПАСИБО!

1 Ответ

2 голосов
/ 08 января 2012

Похоже, есть две проблемы с $xml->TwilioResponse->call.

  1. $xml содержит элемент TwilioResponse ("элемент документа"), $xml->TwilioResponse неверно.
  2. (XML и) Имена элементов SimpleXML чувствительны к регистру, call должно быть Call.

Дать $xml->Call вращение.

...