Ruby&GoogleMapAPIでREXML::ParseException
RubyでGoogle Map APIを叩き、緯度&経度を取っていたところ、以下の例外が発生。
REXML::ParseException: #<REXML::ParseException: Missing end tag for 'DependentLocalityName' (got "DependentLocality") Line: 50 Position: 4092 Last 80 unconsumed characters: > /usr/local/lib/ruby/1.8/rexml/parsers/baseparser.rb:330:in `pull' /usr/local/lib/ruby/1.8/rexml/parsers/treeparser.rb:22:in `parse' /usr/local/lib/ruby/1.8/rexml/document.rb:205:in `build' /usr/local/lib/ruby/1.8/rexml/document.rb:42:in `initialize'
該当箇所はこんな感じ。URLのXML情報生成でエラーとなっている。
doc = REXML::Document.new(open(@url)) #←発生箇所
調べてみたところ以下のページを発見。
http://ep.blogware.com/blog/_archives/2008/7/22/3804863.html
どうやらXMLヘッダはUTF-8だが、データ自体はISO-8859-1で帰ってくることが原因の模様。
こんな感じでコンバートして対応した。
doc = REXML::Document.new(Iconv.conv('utf-8', 'ISO-8859-1', open(@url).string))