Hpricot で省略された終了タグを補完
HTML では終了タグを省略できる。
例えばこんな HTML も多分仕様的にはValid。
<html>
<ol>
<li>test<p>aha<br>
<li>umu
</ol>
<h1>これは?
</html>
あ、h1タグは終了タグを省略できないから Valid じゃないか。 まあこの際どうでも良いけど。
で、こんなHTMLでも「整形式のXML文書」として扱いたいなあと思う時がある。
そんな場合は Hpricot で一旦 parse しておいてから to_html すると良いぽい。
#!/usr/bin/env ruby -wKU
require 'rubygems'
require 'hpricot'
doc = Hpricot(%{
<html>
<ol>
<li>test<p>aha<br>
<li>umu
</ol>
<h1>これは?
</html>
})
puts doc.to_html
これの出力結果は、
<html>
<ol>
<li>test</li><p>aha<br />
</p><li>umu
</li></ol>
<h1>これは?
</h1></html>
<br>とかも<br />に修正してくれてていい感じ。
欲を言えば li タグの中には p も含んでいいはずなので、
<li>test<p>aha<br /></p></li>
って感じに修正してくれてると良かったんだけど。
まあいいか。