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