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だと教えてあげればいいだけでした。