atomのパースについて

このQ&Aのポイント
  • TwitterのAPIを研究中で、atom形式のファイルをパースしたい
  • PHPを使ってsearchのAPIで取得した結果をパースしようとしたが上手くいかない
  • 基本的なところがわからず、どこがおかしいのか分からなくなってきた
回答を見る
  • ベストアンサー

atomのパースについて

いま、TwitterのAPIについて色々と研究しています。 searchのAPIで取得した、atom形式のファイルをパースしたいのです。たとえば、@twitterを含むものを検索して、その結果をパースして、表示したい場合は、 <?php $test=file_get_contents("http://search.twitter.com/search.atom?q=%40twitter"); $xml=simplexml_load_string($test); print($xml); ?> で良いのかと思っていたのですが、サイト上でphpファイルを実行しても、真っ白な画面が表示されるだけで上手くいきません。 どこがおかしいのでしょう? 基本的なところがわかっていない気がするのですが、どこがわかってないのかすら良くわからなくなってきました。 ご教示をお願い致します。

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.3

No2です。 最初のエントリのtitleを得たいなら、 print($sxml->entry[0]->title); まずはPHPを学習した方が良いと思いますよ。

zinn2387
質問者

お礼

どうもありがとうございました。さっそく『よくわかるPHPの教科書』というのを買ってきて、今日一日頑張って勉強していました。 本当にありがとうございました。 頑張ります。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.2

パースとは解析すると言うことです。$xml には解析結果のオブジェクトが入ります。 オブジェクトをprintしても駄目です。print_r するとか。

zinn2387
質問者

お礼

ありがとうございました。 print_rを使ったなんとかできました。

zinn2387
質問者

補足

回答有難う御座いました。 なんとか、 <?php $feed=("http://search.twitter.com/search.atom?q=%40kenichiromogi"); //XMLパース $sxml=simplexml_load_file($feed); //取得データの構造を見る print_r($sxml); //欲しいものをとってくる print$sxml->entry->title; ?> このように出来たのですが、多次元配列から、欲しい情報を抜き出す方法がよくわかりません。 view-source:http://mac554.xsrv.jp/twit/test/fee.php print$sxml->entry->title;としても、全ての[content]を取得する事ができません。 おそらく、基本的な事がわかっていないのだと思うのですが、どうすればいいでしょうか?

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

パースの意味がわかってないのかも?

zinn2387
質問者

お礼

たしかにパースの意味がわかっていなかったようです。回答有難う御座いました

関連するQ&A

  • simplexml_load_fileのエラー

    AmazonのAPIを使ったWebサイトを作っていて、simplexml_load_fileを使って外部サーバのXMLを読み込もうとしています。 ローカル・サーバ1ではうまくいきますが、サーバ2ではI/O warning : failed to load external entity となり読み込めません。 3つのサーバで使用しているプログラムは全く同じです。 PHPのバージョン、SimpleXMLのRevisionは下記の通り。 ローカル:5.2.5、1.151.2.22.2.35 サーバ1:5.2.9、1.151.2.22.2.46 サーバ2:5.2.9、1.151.2.22.2.46 調べていると、XML文字列の中に実体参照等パースエラーとなる文字が含まれているとこのようなエラーが出るとのことでしたが、該当するような文字列はありませんし、同じプログラムでも別のサーバであれば取得できるのでその可能性は考え辛いですが、この場合の対処方法として、file_get_contentsで一度文字列として受け取ってから、simplexml_load_stringでパースするとあったので、それも試しました。 しかし、simplexml_load_fileであれば数秒で取得できるものが、file_get_contentsだと4分以上かかりました。 できればsimplexml_load_fileで行いたいのですが、上記のような違いが出る可能性として考えられることは何かありますでしょうか。

    • 締切済み
    • PHP
  • multiRequest関数で楽天API使用方法

    multiRequest関数にて楽天含め2つのAPIを使用したいのですが、同時にmultiRequest関数で叩くと file_get_contents関数(楽天のコロンを取り除く為)でエラー表示が起きてしまいます。 以下、エラー表示部分 Warning: file_get_contents(<?xml version="1.0" encoding="UTF-8"?><Response><header:Header xmlns:header="http://...・・・・・・<reviewAverage>4.81</reviewAverage><pointRate>1</pointRate><pointRateStar in C:\xxxxx\xxxxx\search.php on line 306 以下、記述内容 $data = array( "http://api.rakuten.co.jp/rws/3.0/rest?developerId=xxxxx&operation=ItemSearch&version=2010-09-15&keyword=$word", "http://productsearch.linksynergy.com/productsearch?token=xxxxxx&keyword=$link_keyword", ); var_dump($data); $r = multiRequest($data); $data = file_get_contents($r[0]); $data= str_replace('itemSearch:ItemSearch', 'itemsearch', $data); $xml = simplexml_load_string($r); print_r($xml); ?>               ここまで。 尚、$xml = simplexml_load_string($r); の上2行を削除し、$xml = simplexml_load_string($r[1]); とした場合はもう1つのAPIの取得は出来ました。 また今、$dataと$rの変数が誤ってる事は存じております。 恐らく、file_get_contents関数の記述がおかしいのかとは思いますが、何がおかしいのか分かりません。 もしかしたら単純な事なのかもしれませんが、調べても全く出てこない為、分かる方がおりましたら、何卒お力添え頂けると助かります。

    • 締切済み
    • 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
  • simplexmlでルート要素の値を取得したい

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

    • ベストアンサー
    • PHP
  • PHPでXMLファイルを読み込みたい

    PHPを使ってxmlファイルを読み込んで、タグの中のデータなどを読み込んだりしたいです。 ですが、自作のxmlファイルだと simplexml_load_file()で読み込めません。xmlファイルの文字コードを色々と変えて試してみましたが、できませんでした。 ちなみに以下のコードは正常に動きました。Yahoo!のxmlファイルです。 $url = "http://rss.weather.yahoo.co.jp/rss/days/5710.xml"; $rss = simplexml_load_file($url); 出力は「【 25日(金) 嶺北(福井) 】 晴れ - 23℃/8℃ - Yahoo!天気・災害」でした。 何度かやるうちにアルファベットは表示できても日本語が表示できないということもありました。 また、xmlファイルをphpのプログラムに作らせたいです。そのときに、simplexml_load_file()で読み込める日本語も含むxmlファイルをphpで作成するプログラムを教えていただけると嬉しいです。 お願いします。

    • ベストアンサー
    • PHP
  • twitterのOAuth認証+xml抽出(php

    こんにちは。 PHPのプログラムで分からない部分があるので質問させてください。 twitterAPIを用いてアカウントの情報のxmlを取得し、simplexmlで解析して ・フォロワー数 ・フォロー数 ・リストされている数 ・ツイート数 ・認証アカウントかどうか といったステータスをsimplexml_load_fileで読み込んで、抽出して変数に入れたいのですが・・・ (この変数に入れたステータスで色々と計算をする予定です) エラーが出てファイルを読み込んでくれません。 ユーザー情報を取得するAPIが認証を通さないといけないため、OAuthを用いて認証しています。 認証が必要のないAPIで返ってきたxmlは問題無くsimplexml_load_fileが使えます。 ちなみにさくらのレンタルサーバーのスタンダードで、PHPのバージョンは5.2.17です。 色々試してみたのですが、何が原因なのか分からないので、ご教授お願いします。 <コード> <?php // twitteroauth.phpを読み込む。 require_once("twitteroauth.php"); // Consumer keyの値 $consumer_key = "******"; // Consumer secretの値 $consumer_secret = "*****"; // Access Tokenの値 $access_token = "******"; // Access Token Secretの値 $access_token_secret = "******"; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $req = $to->OAuthRequest("http://api.twitter.com/1/users/show/id.xml","GET",array("user_id"=>"******")); $xml = simplexml_load_file($req) or die("XMLパースエラー"); ?> <実行結果> Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8"?> <user> <id>*******</id> <name>******</name> <screen_name>******</screen_name> <location>九州</location> <description>webクリエイ ・・・(以下略)・・・ ;。 &am in /home/*********/www/newfile.php on line 20 XMLパースエラー

    • 締切済み
    • PHP
  • 「Warning: simplexml_load_string() [

    「Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 61: parser error : Entity 'rsaquo' not defined」というようなエラーが出てPHPファイルが実行できません。 simplexml_load_string() はphpのpearのXMLフォルダのUtil.phpの中の関数と思われるのですが、ちゃんと関数があるのにどうしてエラーが出ているのでしょうか。

    • ベストアンサー
    • PHP
  • SimpleXMLでデータが取得できない

    PHPで、RSSのデータが上手く取得できず、困っております。 最初はSimplePieというフリーのライブラリを使用していたのですが、 一部のRSSのデータが全く取得できなかったので、使用を諦めました。 自分で処理を書こうと思い、以下の手順を踏んで RSSのデータを取得することを考えついたのですが、 それでもデータが取得できませんでした。 1.file_get_contents($url)で、RSSの生データを取得する 2.RSSの文字エンコーディングをUTF-8⇒SJIS⇒UTF-8に再変換 3.simplexml_load_stringでRSSをパース 最初は1と3の手順しか行っておらず、 SimplePieでデータが取得できたRSSはこれでも問題なかったのですが データが取得できなかったRSSで同じものを試すと 文字コードに関するエラーが出てきたので、2の処理を加えました。 文字コードのエラーは全て解消されたのですが、 それでもsimplexml_load_stringでデータがパースできず、 手詰まりになってしまっている状況です。 文字コードエラーが発生しているRSSでも、 xmlの文字列自体は正常に取得できているようなので simplexml_load_stringの段階で何かが失敗しているのだとは思うのですが、 全くエラーも表示されないため、何がダメなのかが分かりません。 どなたか、原因に心当たりがあったら 教えていただけないでしょうか? どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • PHP5でsimple_xml_load_fileするとエラーになっちゃいます。

    simple_xml_load_fileを使ってXMLを読み込んでいるのですが、読み込みの時点でエラーが出てしまいます。 Warning: simplexml_load_file() [function.simplexml-load-file]: input conversion failed due to input error, bytes 0xAD 0xB5 0x3C 0x2F ↑こんな感じです。 原因を探ったところ、XMLファイルのデータ中にローマ数字(I、II、・・)があるとこのようになることが分かりました。 ちなみにsimplexml_load_stringを使用してもほぼ同様のエラーが発生しました。 ローマ数字入りのXMLファイルを読み込むことはできないのでしょうか?ご存じでしたら知恵を拝借したいのですが・・・。 ※SAX、DOMでも読み込めず(T_T)

    • 締切済み
    • 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

専門家に質問してみよう