Yahoo APIのXMLで総数を取得できない問題について

このQ&Aのポイント
  • Yahoo APIのXMLで総数(totalResultsAvailable)を取得したいのですが、取得できません。
  • $urlには値が入っていますが、$totalResultsで値を取得できません。SimpleXMLElement Objectが返ってきます。
  • 解決策がわからず困っています。$totalResultsの値を取得する方法を教えてください。
回答を見る
  • ベストアンサー

Yahoo APIのXMLの取得について

Yahoo APIのXMLで総数(totalResultsAvailable)を取得したいのですが、取得できません。 $url = "http://api.search.yahoo.co.jp/WebSearchService/xx/webSearch?appid=xxxxx&query=$query"; $xml= simplexml_load_file($url); $yahooxml=$xml->Result->Item ; $totalResults = $yahooxml->{totalResultsAvailable}; print_r ($totalResults); $urlは問題なく値が入ってるのですが、$totalResults ではSimpleXMLElement Object ( ) と返ってきてしまいます。どうすれば、$totalResults の値を取得できるのでしょうか?よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

#YahooAPIの経験はありませんが(汗 とりあえず $xml= simplexml_load_file($url); で取得したら var_dump($xml); で構成を確認してみたら如何でしょうか?それを確認しないことには、当該APIで総数が $yahooxml=$xml->Result->Item ; $totalResults = $yahooxml->{totalResultsAvailable}; で取得可能なのかどうか判断出来ません。

a4orece
質問者

補足

$xmlの値ですが、var_dump($xml);で確認したところ、 object(SimpleXMLElement)#1 (2) { ["@attributes"]=> array(3) { ["totalResultsAvailable"]=> string(3) "311" ["totalResultsReturned"]=> string(2) "50" ["firstResultPosition"]=> string(1) "1" } ["Result"]=> object(SimpleXMLElement)#5 (2) { ["UnitsWord"]=> array(5) { [0]=> string(22) "商品名" [1]=> string(31) "商品名" [2]=> string(25) ・・・・(省略) と返ってきます。 それで、var_dump($totalResults);も確認したところ object(SimpleXMLElement)#3 (0) { } これはどう言う意味なのでしょうか? よろしくお願いいたします。

関連するQ&A

  • PHP5でのXMLパーサーについて

    PHP5で $xml = simplexml_load_file($url)を使って ヤフーオークションAPIから帰ってきたデータを処理したいのですが、 titleは {$xml->item[0]->title}で取得できることがわかったのですが、 totalAuctionsなど@attributesの中のデータを取得することができません。 どのようにすればよいかご教授願います。 よろしくお願いします。 SimpleXMLElement Object (  [@attributes] => Array  (   [totalAuctions] => 3677   [totalPage] => 74   [curPage] => 1  )  [item] => Array  (   [0] => SimpleXMLElement Object   (    [auctionID] => *****    [title] => ******    [seller] => SimpleXMLElement Object     (      [id] => ***      [itemlist] =>http://api.auctions.yahoo.co.jp/AuctionWebService/V1/SellingList?sellerID=***      [rating] =>ttp://rating2.auctions.yahoo.co.jp/jp/show/rating?userID=***     )      [url] => http://********************************      [img]=>http://**********************************.jpg      [price] => **,000 円      [bids] => **      [endtime] => *月 **日 **時 **分      [reserved] => SimpleXMLElement Object       (       )      [option] => SimpleXMLElement Object      (       [0] =>      )     )   ) )

    • ベストアンサー
    • PHP
  • $xml要素を階層指定して取得しようとすると、NULLになるのですが…

    $xml要素を階層指定して取得しようとすると、NULLになるのですが…。 ▽元のXMLファイル(楽天トラベルAPI) <Response> _<Body> __<KeywordHotelSearch:KeywordHotelSearch> ___<hotel> ____<hotelBasicInfo> _____<hotelNo>7531</hotelNo> _____<hotelName>パークハイアットホテル</hotelName> ▽$xml = simplexml_load_string($xml);した際の、var_dump($xml) object(SimpleXMLElement)#1 (2) { ["headerHeader"]=> object(SimpleXMLElement)#2 (3) { ["Args"]=> object(SimpleXMLElement)#4 (1) { ["Arg"]=> array(7) { [0]=> string(4) "true" [1]=> string(4) "true" [2]=> string(4) "true" [3]=> string(4) "true" [4]=> string(4) "true" [5]=> string(4) "true" [6]=> string(4) "true" } } ["Status"]=> string(7) "Success" ["StatusMsg"]=> object(SimpleXMLElement)#5 (0) { } } ["Body"]=> object(SimpleXMLElement)#3 (0) { } } object(SimpleXMLElement)#8 (0) { } この後、$items = $xml->Body->KeywordHotelSearchKeywordHotelSearch->hotel->hotelBasicInfo; とやると、$itemsが NULL になるのですが、何故でしょうか? (※KeywordHotelSearch:の:は、simplexml_load_stringする前に、str_replaceで処理済です) ちなみに、$items = $xml->Body->KeywordHotelSearchKeywordHotelSearch;では、$itemsは下記になります。 object(SimpleXMLElement)#4 (0) { }

    • ベストアンサー
    • PHP
  • simplexmlで取得したデータを配列へ。

    PHP5のsimplexml_load_fileでデータにアクセスし、配列に 入れたいのですが、うまくいきません。 $xml = simplexml_load_file($file); $arrayA = array(); foreach($xml->A as $A){ array_push($arrayA, $A); } print_r($arrayA); とすると、 Array ( [0] => SimpleXMLElement Object ( [0] => data1 ) [1] => SimpleXMLElement Object ( [0] => data2 ) [2] => SimpleXMLElement Object ( [0] => data3 ) ) となってしまいます。 そうではなくて、 Array ( [0] => data1 [1] => data2 [2] => data3 ) とデータの中身を直接配列に入れたいのですが、 どうすればよいのでしょうか。 非常に初歩的な質問じゃないかと思うのですが、どなたがご教示 いただけますと有難いです。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ★★xmlの「イコール」の部分のデータを取得するには?(php.simpleXML)★★

    <url="API" family="2" genus="42" species="216" mode="Family-List"> 例えば、上記のようなXMLデータがあった場合、「family="2"」のデータを取得するにはどのような方法がありますでしょうか? <url>hoge</url> のようになっている部分は取得できるのですが、「family="2"」のようなデータの取得方法が分かりません。 simplexml_load_fileで取得しようと考えておりますが、可能でしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで配列を使ってHTMLソースを取得したいです

    RSSで取得したXMLの中身からURLを取得したのですが、 それぞれのソースをループ構文を使って取得する方法はありますか? XMLの中身を配列として表示すると ソース↓ $RSS_data = simplexml_load_file($RSS_url); $i=0; foreach($RSS_data->URL as $value){ $result [$i] ['URL'] = $value->URL; $i++; } echo "<pre>" ; print_r($result) ; echo "</pre>" ; 結果↓ Array ( [0] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [1] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www~ ) ) [2] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) [3] => Array ( [URL] => SimpleXMLElement Object ( [0] => http://www.~ ) ) こんな感じで続いていきます。 このURLの一つ一つのソースを取得したいのですがどうすればいいのでしょうか?

    • 締切済み
    • PHP
  • tumblrのxmlをsimplexml_load_fileで取得して参照するには

    よろしくお願いします。 tumblrというサイトのxmlを phpのsimplexml_load_fileを使って取得したいのですが 1) $xml->posts->post->photo-url[0]; とするとphoto-urlの値にアクセスできず 下記のように記述すると値を取得できます。 2) $pu=$xml->posts->post->{"photo-url"}[0]; なぜ1の方法でアクセス出来ないのでしょうか? ■xml <?xml version="1.0" encoding="UTF-8"?> <tumblr version="1.0"> <tumblelog></tumblelog> <posts start="0" total="10"> <post> <photo-caption></photo-caption> <photo-link-url></photo-link-url> <photo-url max-width="1280"></photo-url> <photo-url max-width="500"></photo-url> <photo-url max-width="400"></photo-url> <photo-url max-width="250"></photo-url> <photo-url max-width="100"></photo-url> <photo-url max-width="75"></photo-url> </post> </posts> </tumblr> ■php $xml=simplexml_load_file("http://example.tumblr.com/api/read"); $pu=$xml->posts->post->{"photo-url"}[0]; print "<img src=\"".$pu."\">";

    • ベストアンサー
    • XML
  • file関数によるXMLの取得について

    XMLの取得をしようとしているのですが、PHPのバージョンが4.1のためSimpleXMLが使えずfile関数を使おうとしています。 例えば取得したいXMLの値が、 <Result>  <Title>タイトル</Title>  <Summary>  文章  </Summary>  <Url>  http://  </Url> </Result> だった場合、<Title>,<Summary>,<Url>はどのように取得するのでしょうか? 以下の方法で取得をしてみようとしたのですが、これだと<Summary>と<Url>は取得できるのですが<Title>が取得できません... ↓<Title>を取得する場合 $api_url = "http://"; $api_url2 = implode("",file("$api_url")); $title_exp = explode("<Title>",$api_url2); $title_count = count($title_exp); for($i=0;$i<$title_count;$i++){ $title = explode("</Title>",$title_exp[$i]); }; <Title>が他の項目と違うところは改行がない部分だけのようなのですが、どのようにすれば取得できるのでしょうか? 色々なサイトを見ながら手探りで学んでいますのでおかしなところがあるかもしれません。 その点もご指摘いただければ幸いです。 宜しくお願いします。

    • 締切済み
    • PHP
  • Twitterフォロワー数 取得 API xml

    【 Twitterフォロワー数 取得 API xml 】 twitterのフォロワー数を取得しwebsiteに表示したいです。 下記のcodeを記述したのですが、 取得出来ない場合があります。 (Aのサイトですと表示されBのサイトですと表示されない) <?php $urlt = str_replace(0xefbbbf, '', file_get_contents('http://api.twitter.com/1/statuses/user_timeline.xml?id=□□□□□□')); $xmlt = simplexml_load_string($urlt); print $xmlt->status->user->followers_count; ?> ※上記の □□□□□□ 部分には 表示させたいtwitterのscreen_nameかidをいれます。 どうしてもわからずこちらに質問させて頂きました。。。 よろしくお願いいたします。。

    • 締切済み
    • PHP
  • RSSのXMLロードで失敗してしまう

    RSSのデータを取得する、という処理を行いたいのですが、 文字コードの件でひっかかってしまっているようで なかなか前に進むことができません。 ************ // RSSの内容を取得する $rss_text = file_get_contents(※RSSのフィードURL); // RSSの文字エンコーディングを変換→再変換 $rss_text = mb_convert_encoding($rss_text, 'SJIS', 'UTF-8'); $rss_text = mb_convert_encoding($rss_text, 'UTF-8', 'SJIS'); $rss_text = preg_replace('/[\x00-\x1f]/', '', $rss_text); // RSSをパースする $rss_xml = new SimpleXMLElement($rss_text); if ($rss_xml) { // XML解析に成功した場合 // SimpleXMLElementオブジェクトからデータを取得 $items = $rss_xml->item; foreach($items as $item) { echo 'ID:'. $item->guid. '<br />'; echo 'リンク:'. $item->link. '<br />'; echo '日付:'. $item->pubDate. '<br />'; echo 'タイトル:'. $item->title. '<br />'; echo '本文:'. $item->description. '<br />'; } } ************ こういったコードを組んでいるのですが、現状では Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : attributes construct error in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Couldn't find end of Start Tag rss line 1 in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Extra content at the end of the document in... Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in... このようなエラーが表示されてしまいます。 自分なりに文字コードを処理しているつもりではあるのですが、 他にも何かしなければならないことがあるのでしょうか? どうぞ知恵を貸していただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • simplexmlでルート要素の値を取得したい

    PHPでsimplexmlを用いていますが、XMLから値を取得する方法で、他のタグなどの情報は取り出せるのですが、ルート要素である以下の文章からtotalResultsの値である20だけを取り出したいですがうまくいきません。 <ResultSet totalResults="20" totalReturned="2"> 以下のようにあるところへ投げた結果のXMLを取得しています。 $file = file_get_contents( $url ); $xml = simplexml_load_string( $file ); お手数ですがよろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう