0

Linkedin API を使用しています --> https://developer.linkedin.com/documents/profile-fields#company

すべて正常に動作しています。問題なく API に接続できます。以下は、データを要求したときに API によって返されるデータに従います。

これが私のリクエストです(コード全体は投稿しません。500行以上あります)が、取得したいものの本質です。

$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>";
}

上記の応答に従います。

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
                        )

                )

        )

)

今私の質問:

[recommendation-text] ノードのみを取得して出力する方法は? 私はすでに推奨事項のみを呼び出して$response2 = $OBJ_linkedin->profile('~:(recommendations-received)'); いますが、それはすべてを返します。次に、[recommendation-text]???のみを取得する方法

simplexmlelement (http://br2.php.net/manual/en/class.simplexmlelement.php) を試してみましたが、成功しませんでした。

助けてくれてありがとう。

[結果]

私にとってうまくいった答えを投稿します。

@Mirceaが提案したように、次のコードを使用しています。

$sxml = new SimpleXMLElement($response2['linkedin']); 
$res = $sxml->xpath('recommendations-received/recommendation/recommendation-text'); 
echo $res[0];

このコードの代わりに:

   $response2['linkedin'] = new SimpleXMLElement($response2['linkedin']);
   echo "<pre>" . print_r($response2['linkedin'], TRUE) . "</pre>";

ここでの違いは、xpath メソッドを使用して、simpleXML ノードで一致する子を検索していることです。ありがとう@Mircea。

4

2 に答える 2

2

simplexmlelementhttp://www.php.net/manual/en/simplexmlelement.xpath.phpのxpath関数を試してみてください。私はあなたが望むものを手に入れるための正しい方法は次のとおりだと思います:

$sxml->xpath('recommendations-received/recommendation/recommendation-text')

配列を返すので、それを繰り返す必要があります(そのページの例を見てください)。xpathクエリはそのようなものであり、最終的には受け取ったxmlの構造に依存します。

それが役に立てば幸い。

于 2012-04-16T15:42:35.290 に答える
0

プロパティへのアクセスは、次のrecommendation-textような方法で行われます。

foreach($response2->{recommendations-received} as $recommendation) {
  $recommendation->{recommendation-text}
}
于 2012-04-16T16:53:36.263 に答える