2

この XML を返すfacebook API からの結果を解析しようとしました。

<links_getStats_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
  <link_stat>
    <url>http://www.facebook.com</url>
    <normalized_url>http://www.facebook.com/</normalized_url>
    <share_count>1624678</share_count>
    <like_count>928267</like_count>
    <comment_count>150197</comment_count>
    <total_count>2703142</total_count>
    <click_count>949</click_count>
    <comments_fbid>405613579725</comments_fbid>
    <commentsbox_count>2328</commentsbox_count>
  </link_stat>
</links_getStats_response>

Facebookのいいねの数を取得したい。

これが私のコードです:

$apiFacebook="http://api.facebook.com/restserver.php?method=links.getStats&urls=http://www.facebook.com";
$parse = simplexml_load_file($apiFacebook);
$count = $parse->xpath("/links_getStats_response/link_stat/like_count");
print_r($count);

問題はパスですか?

4

1 に答える 1

1

結果には名前空間があります。それらを定義して使用するか、代わりに名前空間にワイルドカードを使用します。

/*:links_getStats_response/*:link_stat/*:like_count

名前空間を登録して使用するには、次のようにします。

$parse = simplexml_load_file($apiFacebook);
$parse->registerXPathNamespace('fb', 'http://api.facebook.com/1.0/');
$count = $parse->xpath("/fb:links_getStats_response/fb:link_stat/fb:like_count");

文字列「fb」は任意に選択できます。

于 2013-02-08T16:33:54.167 に答える