必要があって、C++で、HTMLのパーサーを作成することになった。ロボットに組み込む、ローカルモジュールの一部となる。
XMLはtinyxml2で対応していることは既に書いている。原則的に、Htmlも、Xmlのルールに従っているはずなのだから、tinyxml2でパース(構文解析)してやれば良いようなものだが、実はそう簡単にいかない。
なぜなら、Htmlは、多少文法通りに書かれていなくても、パースをやめたりしてはいけない。なんらかのかたちで表出しなければならないのだ。そうしたあたりのいい加減さをxmlパーサーはわかっていない。こちらが、Htmlパーサーに求めているのは、Xmlほどの厳密さや、正確性ではない。必要な、タグ、属性、テキストを切り分けられれば良い。
ネットで探しても適当なものはなかった。あまり大掛かりなものは、ロボットに組み込めない。必要最小限の軽やかなものでよいので、結局自分で作ることにした。以外と手間はかからない。