NS_HTMLPARANOIDFRAGMENTSINK_CONTRACTID

実用 - innerHTML
だと最後に / がつかなくて new XML(...) できないけど
実用 - HTML文字列からJavaScriptタグなどを除去する、nsIScriptableUnescapeHTML
だと<IMG />になるのでいける。タグが大文字になるのが玉に瑕。
中を見ると

nsCOMPtr<nsIParser> parser = do_CreateInstance(kCParserCID, &rv);
....
      sink = do_CreateInstance(NS_HTMLPARANOIDFRAGMENTSINK_CONTRACTID);
    }
    if (sink) {
      sink->SetTargetDocument(document);
      nsCOMPtr<nsIContentSink> contentsink(do_QueryInterface(sink));
      parser->SetContentSink(contentsink);
      rv = parser->ParseFragment(aFragment, nsnull, tagStack,
                                 aIsXML, contentType, mode);
      if (NS_SUCCEEDED(rv))
        rv = sink->GetFragment(aReturn);

こんな。
NS_HTMLPARANOIDFRAGMENTSINK_CONTRACTID
というsink名がいかにもダメHTMLをfixしてるっぽい。

これを使ってるほかのやつを探してみる。

探した。nsIScriptableUnescapeHTMLしかないっぽい。