Entries


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

-件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

-件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1184-2253f130

php:SimpleXMLで名前空間や属性を処理する


SimpleXMLはxmlの処理が非常に簡単です.SimpleXMLを使用する際,多くの場合はxmlが単純な構成になっていて問題ないのですが,atom形式のように名前空間や属性が色々くっついている場合は最もシンプルな方法では処理できませんでした.

ということで復習がてら書いてみます.ここで使用するxmlはYouTubeのDataAPIを利用します.YouTubeのAPI詳細はこちらへリファレンス ガイド: Data API プロトコル

DataAPIを使用し『自民党CM』というワードで検索して結果を取得しました.
今回取得できたのはこの動画のxmlです.


xmlを見てみます.このxmlはあくまで例ですので閲覧用に見やすくするため改行してあります.

これをSimpleXMLで要素や属性を処理してみます.
phpのソースはこんな感じです.

そして出力結果です.
【自民党ネットCM】ラーメン篇
text
自民党
http://gdata.youtube.com/feeds/api/videos/rAjj1CGxhY8/comments
News
video/3gpp
2009-08-21

様々なパターンの要素や属性を処理できました.

$feed->entry->title;
//要素を取得
//<title type="text">【自民党ネットCM】ラーメン篇</title>

こちらがSimpleXMLで要素を取得する基本形ですね.title要素を取得しています.

$feed->entry->title->attributes()->type;
//type属性を取得
//<title type="text">【自民党ネットCM】ラーメン篇</title>

そして属性を指定する場合はattributes()(上記の場合type)を指定してあげます.ここではtitle要素の属性なのでtextが取得できます.属性が複数あり,具体的に指定しないと連想配列で受け取ったかもしれません.確認してみてください.

$feed->entry->category[2]->attributes()->term;
//term属性を取得
//<category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="自民党" />

同じ要素が複数ある場合は配列と同じようにキーを指定してあげれば目的の要素が取得できます.category要素3つめのterm属性にある『自民党』が欲しいのでキーに2を指定しています.

$feed->entry->children('yt',true)->recorded;
//名前空間のある要素を取得
//<yt:recorded>2009-08-21</yt:recorded>

こちらは名前空間がある場合ですね.名前空間を取得する場合はchildren()に名前空間を指定してあげれば子供の要素を取得できます.名前空間がある場合に普通に取得しようとするとできたような気もしますが,なんらかの不都合があった気がします.

以上.

ことりあえず動いているのですがあまり自信がないので間違いがありましたらご指摘ください.

ついでにYouTubeのAPIを使いSimpleXMLで検索サイトぽいものを作ってみました.

急上昇ワードYouTube検索あんてな

上のサイトを作るよりもブログにこのエントリーを書く方が時間がかかってしまいました.では.

プログラミングPHP 第2版プログラミングPHP 第2版
(2007/10/23)
Rasmus LerdorfKevin Tatroe

商品詳細を見る

0件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1184-2253f130

Appendix

プロフィール

川崎修

  • Author:川崎修
  • インターネット大好き!
    調布周辺で自宅警備してます



    メール:pugiemonn@gmail.com
    skype:pugiemonn
    twilog:Twilog
    mixi:mixi
    facebook:facebook
My Profile by iddy
FC2ブログ

カレンダー

10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

最近の記事

Twitter

コミュニティ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Adsense

月別アーカイブ

はてぶ数

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。