无法在 PHP 中从 Basecamp API 解析 SimpleXML

发布于 11-16 09:11 字数 515 浏览 3 评论 0原文

我正在使用 CodeIgniter 和为其编写的 Basecamp 类来连接到 Basecamp API 并从中检索数据。我正在正常连接并抓取数据,并且使用 SimpleXML 返回数据(您可以在请求中指定 XML 或 SimpleXML)。

我只是很难从回应中得到任何好的东西。以下是原始响应: http://pastie.org/private/bbxhgbzbbbk77ji3ua4g 并查看源代码:http://pastie.org/private/qftl28osnumhrdwr1zxuw

显然我通过 print_r 命令看到了这些。

例如,有人可以告诉我如何从中获取项目名称列表吗?

如果效果更好的话,我还可以用 XML 发出请求。

I'm using CodeIgniter and a Basecamp class written for it to connect to and retrieve data from the Basecamp API. I am connecting fine and grabbing data fine and its being returned using SimpleXML (you can specify XML or SimpleXML in the request).

I am just having a big problem getting anything good out of the response. Here is what the response looks like raw: http://pastie.org/private/bbxhgbzbbbk77ji3ua4g and view source: http://pastie.org/private/qftl28osnumhrdwr1zxuw

Obviously I see those via a print_r command.

Can someone tell me, for instance, how to get a list of the project names out of that?

I can also make the request in XML if that works better.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空‖城人不在2024-11-23 09:11:16

我们可以将响应中的“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;
}

干杯

We can load the 'body' string from the response into a new SimpleXML object and iterate over the 'project' nodes to get project information. Here it seems that you have already loaded the SimpleXML object, so we just have to do the rest.

$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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文