livedoor blogのRSS(1.0)を取得する際に記事の作成日を取得する。
はてなブログとはちょっと違い、一手間加える必要がありました。
自分のブログから取得したRSSを比べてみます。
はてなブログ
<rss version="2.0">
<channel>
略…
<item>
<title>LaravelのDB連携できるよう設定する。</title>
<link>http://pdo99.hatenablog.com/entry/2016/11/19/014847
<description>略…</description>
<pubDate>Sat, 19 Nov 2016 01:48:47 +0900</pubDate>
<guid isPermalink="false">hatenablog://略…</guid>
<category>Laravel5.3</category>
<category>MariaDB5.5</category>
<enclosure url="略…" type="image/png" length="0" />
</item>
略…
Livedoor blog
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/略… >
略…
<item rdf:about="http://blog.livedoor.jp/ece_m/archives/50045854.html">
<title>動物病院に行ってきた。</title>
<link>http://blog.livedoor.jp/ece_m/archives/50045854.html
<description>略…</description>
<dc:creator></dc:creator>
<dc:date>2016-11-20T18:06:01+09:00</dc:date>
<dc:subject>雑記</dc:subject>
<content:encoded>
<![CDATA[
略…
]]>
</content:encoded>
</item>
略しまくりで恐縮ですが結構違うんです。
はてなブログ取得ならば、
$rss_items = simplexml_load_file("URL");
で取得し、
$rss_items->title, $rss_items->link…と見ていくと、
タイトル、URL、本文、作成日時と取得することが可能ですが、
LivedoorBlogの場合<dc:***>となっているデータが取得することが出来ません。
調べていくと、このdcの部分は名前空間を表していて、
名前空間がついた要素には普通にアクセスできません。
更に調べると、Childrenメソッドを以下の感じで使用すると取り出すことができました。
$data = $item->children('http://purl.org/dc/elements/1.1/');
$dataの中は、
object(SimpleXMLElement)#7 (3) {
["creator"]=>
string(5) "***"
["date"]=>
string(25) "2016-11-20T18:06:01+09:00"
["subject"]=>
string(6) "雑記"
}
こんな感じで取り出すことができました。
できたけど統一されてほしい感…。