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しかないっぽい。