Не удается разобрать SimpleXML из API Basecamp в PHP - PullRequest
1 голос
/ 21 июня 2011

Я использую CodeIgniter и класс Basecamp, написанные для него, чтобы подключаться и извлекать данные из API Basecamp.Я подключаю нормально и получаю данные нормально, и они возвращаются с помощью SimpleXML (вы можете указать XML или SimpleXML в запросе).

У меня просто большая проблема, получая что-то хорошее из ответа.Вот как выглядит ответ в необработанном виде: http://pastie.org/private/bbxhgbzbbbk77ji3ua4g и просмотр источника: http://pastie.org/private/qftl28osnumhrdwr1zxuw

Очевидно, что я вижу их с помощью команды print_r.

Может кто-нибудь сказать мне, напримерКак получить список имен проектов из этого?

Я также могу сделать запрос в XML, если это работает лучше.

1 Ответ

2 голосов
/ 30 июня 2011

Мы можем загрузить строку 'body' из ответа в новый объект SimpleXML и выполнить итерацию по узлам 'project', чтобы получить информацию о проекте.Здесь кажется, что вы уже загрузили объект SimpleXML, поэтому мы просто должны сделать все остальное.

$projects = array();
foreach($response['body']->project as $_xml) {
    //parse the project xml into array
    $projects[] = xml2array($_xml);
}
print_r($projects);

//list the project titles
foreach($projects as $project) {
    echo $project['name'] .'<br/>';
}

//function to parse a xml object to array: http://php.net/manual/en/ref.simplexml.php
function xml2array ($xmlObject, $out = array())
{
    foreach ((array)$xmlObject as $index => $node) {
        $out[$index] = (is_object($node)) ? xml2array ($node) : $node;
    }
    return $out;
}

cheers

...