首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用simplexmlelement或其他XML函数从数组中检索节点?

如何使用simplexmlelement或其他XML函数从数组中检索节点?
EN

Stack Overflow用户
提问于 2012-04-16 15:22:45
回答 2查看 266关注 0票数 0

我在使用Linkedin API -> https://developer.linkedin.com/documents/profile-fields#company

一切都很好,我可以毫无问题地连接到API。当我请求一些数据时,Bellow遵循API返回的数据。

这是我的请求(我不会发布整个代码,它超过500行),但这是我想要检索的内容的本质。

代码语言:javascript
复制
$response2 = $OBJ_linkedin->profile('~:(recommendations-received)');
if($response2['success'] === TRUE) 
{
   $response2['linkedin'] = new SimpleXMLElement($response2['linkedin']);
   echo "<pre>" . print_r($response2['linkedin'], TRUE) . "</pre>";
}
else 
{
   // request failed
   echo "Error: <br />RESPONSE:<br /><br /><pre>" . print_r($response2) . "</pre>";
}

上面的遵循响应:

代码语言:javascript
复制
SimpleXMLElement Object
(
    [recommendations-received] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [total] => 1
                )

            [recommendation] => SimpleXMLElement Object
                (
                    [id] => 0123456
                    [recommendation-type] => SimpleXMLElement Object
                        (
                            [code] => service-provider
                        )

                    [recommendation-text] => Here come the recommendation text from the API.
                    [recommender] => SimpleXMLElement Object
                        (
                            [id] => npAnFGrTys
                            [first-name] => John
                            [last-name] => Doe
                        )

                )

        )

)

现在我的问题是:

如何仅检索和打印推荐文本节点?我已经只打电话给推荐-收到的$response2 = $OBJ_linkedin->profile('~:(recommendations-received)');,但它返回整个事情,然后如何只得到[recommendation-text]

我尝试过simplexmlelement (http://br2.php.net/manual/en/class.simplexmlelement.php),但没有成功。

谢谢您的任何帮助。

结果

我会把得到的答案寄给我。

我使用的代码如下建议的@Mircea:

代码语言:javascript
复制
$sxml = new SimpleXMLElement($response2['linkedin']); 
$res = $sxml->xpath('recommendations-received/recommendation/recommendation-text'); 
echo $res[0];

而不是这段代码:

代码语言:javascript
复制
   $response2['linkedin'] = new SimpleXMLElement($response2['linkedin']);
   echo "<pre>" . print_r($response2['linkedin'], TRUE) . "</pre>";

这里的不同之处在于,我现在使用xpath方法搜索simpleXML节点以寻找子节点匹配。谢谢@Mircea。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-16 15:42:35

您应该尝试使用simplexmlelement http://www.php.net/manual/en/simplexmlelement.xpath.php的xpath函数。我认为得到你想要的东西的方法是:

代码语言:javascript
复制
$sxml->xpath('recommendations-received/recommendation/recommendation-text')

它返回一个数组,因此您应该对它进行迭代(查看该页面上的示例)。xpath查询就是这样的,它最终取决于所接收的xml的结构。

希望能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2012-04-16 16:53:36

访问recommendation-text属性的方法如下:

代码语言:javascript
复制
foreach($response2->{recommendations-received} as $recommendation) {
  $recommendation->{recommendation-text}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10176981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档