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) "雑記"
}

こんな感じで取り出すことができました。

できたけど統一されてほしい感…。