おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

Hpricot で link タグが勝手に空要素になる

 Hpricotを使っていて、くだらないことでちょっとハマってしまいました。

irb(main):003:0> a = Hpricot("<link>aaaa</link>")  
=> #<Hpricot::Doc {emptyelem <link>} "aaaa" {bogusetag </link>}>  
irb(main):004:0> a.to_s  
=> "<link />aaaa"  
irb(main):005:0> (a/:link).inner_html  
=> ""  

といった具合に、link タグがおかしなことになります。RDFのパースをする処理でこの現象に出会ってしまい、ちょっと時間を浪費してしまいました。
正解は簡単で

irb(main):006:0> b = Hpricot.XML("<link>aaaa</link>")  
=> #<Hpricot::Doc {elem <link> "aaaa" </link>}>  
irb(main):007:0> b.to_s  
=> "<link>aaaa</link>"  
irb(main):008:0> (b/:link).inner_html  
=> "aaaa"  

明示的にXMLだと教えてあげればいいだけでした。