そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

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


レスポンスはこんな感じなので、

1111.0定山渓温泉じょうざんけいおんせん0099北海道札幌市南区定山渓温泉北海道北海道定山渓定山渓塩化物泉定山渓温泉< /OnsenAreaName>じょうざんけいおんせん< /OnsenAreaNameKana>50002http://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
定山渓温泉


ここまでできれば、組み合わせでなんでもできそうですね。