
原因はnamespace関係っぽいです。でも、PHPのSimpleXML関数でどう対処すれば良いのかは、まだ不明。マニュアルのコメント欄を読むと、どうやらnamespaceの扱いに問題があるみたいなので、他の関数を使ったほうがいいのかも知れない。
だいたい分かった気がします。namespaceが指定されているXMLに対してXPathを使う場合には、そのnamespaceを「登録」してやらないといけないらしいのですが(そもそも、このことを知らなかったのが嵌った原因)、PHPのSimpleXML関数にはnamespaceを登録する方法がないようなので、XPathを使うことができないということのようです。
PHP5のDOM関数のDOMXPathクラスにはregisterNamespaceというメソッドがちゃんとあったので、こちらを試してみます。
はてなブックマークに自分が登録しているエントリーを、AtomAPIを使って全て取得するスクリプトをPHP5で書いてみた。
WSSE認証の部分は、typesterさんという方のブログの記事「PHP で WSSE 認証」を真似したら問題なくできたのだが、せっかくPHP5を使っているので、取得されるXMLをsimplexml_load_string関数でsimplexml_elementオブジェクトにして、それをXPathを使って処理しようとしたら、xpathメソッドがうまく使えなくて挫折。simplexml_elementオブジェクトのプロパティとして各要素を取得することはできているので、パース自体は成功してると思うんだけど。
XPath使わなくても当初の目的は達せられるけど、XPathなしでXMLを扱うのは嫌なので、もう少し調べますか。
ジュンク堂池袋店にて購入。
・ Joel Spolsky 『Joel on Software』 オーム社
ぼくは、この人の文章が好きで、去年の秋頃はいくつかの記事をウェブサイトから印刷して持ち歩いていました。何度も繰り返して読みたくなる本だと思います。
・ 渡辺克義 『ポーランド語の風景』 現代書館
この手の語学エッセイは、つい買って読みたくなってしまいます。ポーランド語は、大学生のときに少しだけ齧ったことがありますが、なんで勉強しようと思ったのか良く思い出せない…。


