はてなブックマークATOM APIで取得したRSSの解析


http://q.hatena.ne.jp/1312448637で質問した内容を元に自分のはてなブックマークをXML形式で取得することができました。
やりたいこととしては、このXMLの各要素(ブックマークしているページのタイトル、URL、タグ)をデータベースに入れたいと考えています。
また、<link rel="next"~ が出てこなくなるまで何度も取得しようと思います。

データベースに入れる前にひとまず要素だけを取得し表示しようと思い、
http://php.net/manual/ja/simplexml.examples-basic.php
を参考に
example.phpを取得したXML
にし、例2を参考にすることによってタイトルは取得することができました。
ただ、例6を参考にしブックマークしたページのURLは取得することができませんでした。
また、http://4ki4.cocolog-nifty.com/blog/2008/08/php_simplexmlxm_90c5.html
などを参考にdc:subjectも処理しようと考えコードBのようにしても
何も出力できませんでした。

お願いします。

回答の条件
  • 1人20回まで
  • 13歳以上
  • 登録:2011/08/22 16:20:05
  • 終了:2011/08/29 16:25:08

ベストアンサー

id:TransFreeBSD No.2

TransFreeBSD回答回数662ベストアンサー獲得回数2642011/08/23 22:49:15

こんな感じでどうでしょう。

こういった、ある特定の条件に当てはまる要素を取得したい場合、本当はXPathを使うのがよいのですが、なぜか思ったように取得できないので取り合えず。

[追記]

XPathで出来ました。こんな方法もあるという参考に。

id:whiterdev

ありがとうございました。

やってみたところ出来そうです。

2011/08/30 13:48:49

その他の回答(1件)

id:TransFreeBSD No.1

TransFreeBSD回答回数662ベストアンサー獲得回数2642011/08/23 00:07:50

つまりこのような事ですか?

コードでも示してもらわないと、例の通りなら動くはずとしか言えませんが。

行き詰まったらコピーしたファイルをとにかく削って削って、バグのある一番シンプルなコードにしてみると見えてきます。


勘でありがちな所をかくと、文字コードの影響、実はコピペ失敗でXMLが壊れてる、要素名や属性名のスペルミス、あたりかな?

id:whiterdev

示していただいたコードを参考に、書き換えたところ

無事動きました。

どうやら余計なコードを書いていたようです。

"また、<link rel="next"~ が出てこなくなるまで何度も取得しようと思います。"

に関して

http://codepad.org/h3de7yMN

のようにコードを書いたところ一応nextのアドレスを取得することができました。

ただ、62行のように

直接指定しているため、スマートじゃない(というより、これ以外のXMLだと使用不可)

のためどのように改良すればよいかお願いします。

2011/08/23 14:45:13
id:TransFreeBSD No.2

TransFreeBSD回答回数662ベストアンサー獲得回数2642011/08/23 22:49:15ここでベストアンサー

こんな感じでどうでしょう。

こういった、ある特定の条件に当てはまる要素を取得したい場合、本当はXPathを使うのがよいのですが、なぜか思ったように取得できないので取り合えず。

[追記]

XPathで出来ました。こんな方法もあるという参考に。

id:whiterdev

ありがとうございました。

やってみたところ出来そうです。

2011/08/30 13:48:49
  • id:TransFreeBSD
    例6は取得ではなく比較ですが、何かの間違いですか?
    コードBとは何ですか?
  • id:whiterdev
    例6ではなく、例5でした。
    また、コードに関しては、私が書いたコードを乗せていたのですが、文字数制限に引っ掛かってしまったため乗せてはいません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません