yoyaQホテル検索 for Google Earth
Posted By 茜丸@昼勤務 on 2009年9月15日
相変わらず、昨日に引き続きリクルートのWebAPIをパースし続けているわけなのですが、XSLの処理にどうやら問題がありそうなんですが、そこから先がはまって勧めない状況。SimpleXMLでパースをしてみると、ちゃんとデータは取れている。だからKMLからPHPまではOKだ。だが、XSLTの処理を施すと、フォルダの中身が空っぽ。もちろんこの処理はDOMで処理したもの。なのに、他のAPIではきちんと動くものが、リクルートのものとなると途端に駄目になる。
調べてみると、リクルートのWebAPIは、他のAPIと違う点がある。
- XMLファイルをダウンロードしてみると、改行が一切ない全部が1行になっているXML
- ルートノードにいくつかresultsという名のノードがある。同列のノードにshopがあり、自分はここをKML化したい。
- xmlns属性が付いている(これが肝かもしれない)
何が悪いのかさっぱりわからない。XSLの書き方は間違っていないような(他のAPIはちゃんとできているので、それそのものより、なにかに嵌っている?)。どこかのサイトでは、リクルートのルートノードを取得する必要はない とか クロスドメインで取得はできないから だとか、それをどうXSLで書けばよいのやら、さっぱりわからない。メモがてらそれを記してみる。
<?xml version=”1.0″ encoding=”UTF-8″?>
<xsl:stylesheet xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” version=”1.0″>
<xsl:output method=”xml” encoding=”UTF-8″ />
<xsl:template match=”/”>
<kml xmlns=”http://earth.google.com/kml/2.1″>
<Document>
<Folder>
<name>HotPepper検索結果</name>
<xsl:apply-templates select=”results” />
</Folder>
</Document>
</kml>
</xsl:template>
<xsl:template match=”results”>
<xsl:for-each select=”shop”>
<Placemark>
<name><xsl:value-of select=”name” /></name>
<description>
<xsl:value-of select=”id” />
</description>
<visibility>0</visibility>
<Point>
<coordinates><xsl:value-of select=”lng” />,<xsl:value-of select=”lat” />,0</coordinates>
</Point>
</Placemark>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
フォルダのところまではOKでも、欲しいのはその先。XMLは難しい。
さて、そんなこんなでまた、他のAPIをパースしてみました。今回は、yoyaQというホテル検索用APIを提供しているサイト。といっても、ここは高級ホテルや旅館限定で、割引率を利かせた特別プランを用意し提供しているサイト。一休のようなサイトです。当方のような貧乏人にはあまり縁がなさそうなホテルがずらり。自分の場合、旅行といったら、安い旅館で地元のおいしいご飯が食べられればそれでいいので、よくて国民休暇村に止まるくらい。こんな旅館・ホテル、一体止まることなんて人生で何回あるんだろうか?というくらい、多分行かないかもしれない・・・
本来はウェブでマッシュアップに使うようなもっと幅広い検索が可能なのですが、今回はGoogle Earthにベタ載せということで、フィルタなしで搭載しています。人数、予算、部屋のタイプ、人数、広さ、ほか諸々フィルタして使うのが定石なのですが、今回のものはデフォルト値ですので、1人様専用と言えます。高級限定なので、それほど多くヒットはしません。
今後、他にもホテル検索APIは見つけて載せたいのですが、API側ももう一ひねりあると助かるなというのが、アイコン画像。お天気で言えば天気マークに該当するものですが、それで区別ができるのですが、あまりそういう凝ったことをしているAPIは見かけません(空き具合や、価格レベルだとかいろいろ分類して表示できそうなのですが)。いくつか、WebAPIもパースしてはいるのですが、まだまだ今後に期待といった感じです。タダ単純に載せるだけでも、Google Earthの場合、緯度経度情報が必要ですし、住所を使うなら、そのままじゃ載せられないケースが多い。住所から建物名を取り除いてジオコーディングという手もあるのですが、いまいちスマートじゃありません。そろそろ、本格的にPHPを勉強しないと先に進めそうにないなぁと感じました。
Comments
Leave a Reply
注記: コメントは管理者が承認されるまでの間遅れて表示されます。承認後、表示されるようになります。コメントを再送信する必要性はありませんスパムコメント防止の為、ご協力くださいませ。