HTMLっぽいパーサ

HTMLっぽいパーサを作ってます。
XML形式なら簡単にDOMツリーにできるのですが、HTMLって、タグのOpen/Closeがあいまいで、たとえ正しいHTMLでも、うまくツリー状にならないです。
いい加減なHTMLでも、その「不備を察して」解釈しなければなりません。(「不備を察する」プログラムってどうやって作るんだ???)
純粋なHTMLならまだしも、今やっているのは「変態的」なHTMLだから厄介。


・・・で、ツリー状ではなく、フラットなリストにすればいいことに気がつきました。
ここまでは正確に解析できるし、今回やりたいことはこれで十分です。
こんな感じ。

Element "<html>"
Text    "\n\t"
Element "<head>"
Text    "\n\t\t"
Element "<title>"
Text    "a-sanの日記"
Element "</title>"
:

HTMLではいきなりDOMツリーにするよりは、こういう解析手順を踏んだほうがよさそうです。