: O. Yuanying

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>

って感じに修正してくれてると良かったんだけど。

まあいいか。