このブログで以前に紹介した“『Googleニュース用RSSジェネレータ』と『単眼RSS』を使って労働関連に関る最新ニュースのコンテンツを作る”の続編です。 ニュースの表示方法をもう少しカスタマイズしたくなったので、単眼RSSを使わないやり方で編集する方法を模索しました。以下を紹介します。
[概要]
・googleニュースをPHPのSimpleXML拡張モジュールを使ってXMLオブジェクトに変換、さらにarray型データに変換する
・array型データの中から、Webサイトの表示に必要な項目を取り出して、htmlドキュメントを成形する
1.googleニュースをPHPのSimpleXML拡張モジュールを使ってxmlオブジェクトに変換、さらにarray型データに変換する
SimpleXML拡張モジュールは、php5.0.1以上から対応しているので、最近のレンタルサーバなら殆ど利用できると思います。まず、Googleニュース用RSSジェネレータ<http://g.1o4.jp/news-rss.html>でURIを生成します。そのURIで得たデータをSimpleXMLElement、SimpleXMLIteratorを使ってarray型に変換します。というような操作が、phpマニュアルサイトの「User Contributed Notes」のコーディング例 http://php.net/manual/ja/class.simplexmliterator.phpで紹介されていましたので、参考にしました。
その例の中にあるxml2array()関数を使用した場合。
[PHP コーディング例]
2.array型データの中から、Webサイトの表示に必要な項目を取り出して、htmlドキュメントを成形する
[php コーディング例]
[説明]
googleニュースで得たarrayデータの要素(=xmlのタグ)
・"updated" :ニュースの更新日時。atom(RFC3339) 形式の世界標準時だったので日本時間に変換
・"title" :ニュースのタイトル
・"id" :ニュースのリンク先情報
これらの要素は、1.の処理の$rssAtomArrayをprint_r()で出力して、確認しました。
今回は、googleニュースの場合ですが、他のxmlオブジェクトは、違ってくるかもしれません。
後は、Webサイトに合わせて、htmlドキュメントを成形して、表示すればOKです。
余談:
XMLオブジェクトをArray型に変換する方法は、ネットで検索すると、json_decode、json_encodeを利用すると簡単にarray型に変換できる、と出てきます。試してみると、googleニュースで取得したデータは、階層が深いのか?うまく変換できませんでした。今回、紹介したSimpleXML拡張モジュールには、イテレータが用意されているので、それを使えばXMLオブジェクトのハンドリングは容易になりますね。
(結局、phpマニュアルサイトのコーディング例を参考にしちゃうんですが)