XPathでデータをとる
RESTでとったXMLデータから温泉宿の名前をとってみようと思います。
1 require 'net/http'
2 require 'rexml/document'
3
4 Net::HTTP.version_1_2
5
6 Net::HTTP.start('jws.jalan.net', 80) {|http|
7 response = http.get('/APICommon/OnsenSearch/V1/?key=XXXXXX&l_a rea=010300&count=1&xml_ptn=1')
8 #puts response.body
9
10 doc=REXML::Document.new response.body
11 puts doc.elements['/Results/Onsen/OnsenName'].text
12 }
13
レスポンスはこんな感じなので、
1 1 1 1.0 定山渓温泉 じょうざんけいおんせん 0099 北海道札幌市南区定山渓温泉 北海道 北海道 定山渓 定山渓 塩化物泉 定山渓温泉< /OnsenAreaName> じょうざんけいおんせん< /OnsenAreaNameKana> 50002 http://jws.jalan.net/Redirect/V1/?key=XXXXXX&rd_key=NTAwMDIgICAgIDAxMDI= 札幌市から南西に約30km、国道230号を1時間ほど走ると、近代的ホテルや風情ある旅館が渓谷の中にあらわれる。温泉名は慶応2(1866)年、修行僧の美山定山が源泉を発見した事が由来。札幌の奥座敷として人気が高く、札幌から日帰りで温泉を楽しむ人も多い。泉質はナトリウム塩化物泉、効能は神経痛、胃腸病など。
取りたいのは、Result要素の下の、Onsen要素の下のOnsenNameです。
取ってくるコードはこんな感じで.textでテキストノードを取れるよう。
doc.elements['/Results/Onsen/OnsenName'].text
結果はこんな感じでうまくいきました。
$ jruby jalan.rb
定山渓温泉
ここまでできれば、組み合わせでなんでもできそうですね。