はてブからdel.icio.usに移行したのですが、両方APIが公開されているおかげで移行が楽チンでした。
移行スクリプトは勉強のために(?)pythonで書こうかと思ったのですが、また今月は仕事でphpを書くことになったので、しばらくphp漬けになるためにもphpで書くことに(笑)
しかし少しこまったのが、はてブのfeedの仕様ではtagがdc:subjectという要素で表現されており、phpでよく使われているmagpieRSSやPEARのXML_RSSだと、複数の要素が連結されたテキストとして取り出されてしまい、tagをちゃんと取り扱えないという問題がありました。
PEARのXML_Feed_Parserを使うと、dc:subjectなどの拡張名前空間の要素もちゃんとparseすることができます。
PEARのドキュメントにもサンプルがありますが、entryからmodelを取り出し、getElementsByTagNameNSというメソッドで要素郡を取り出します。
entryからmodelを取り出す
$model = $entry->model;
*ここで$entry->linkや$entry->titleはそのまま使える状態
要素郡の取り出し
$subjects = $model->getElementsByTagNameNS('http://purl.org/dc/elements/1.1/', 'subject');
*もちろんnamespaceや要素名は正確である必要があります
取り出した要素郡に対してはnodeValueをつかって中身にアクセスします
foreach ($subjects as $subject) {
print $subject->nodeValue."\n";
}
こんな高機能なparserがあると、RSSかかってこいやー!って気になれそうです。