質問: parser.parseFromString(xmlString, 'text/xml') if dom.getElementsByTagNameNS(parsererrorNS, 'parsererror').length > 0 throw new Error('Error parsing XML') return dom; ``` ただ、この場合は `foo` や `aaa` を誤検出してしまいます。本当に検知したいのは`foo` のような中途半端な文字列です。 divやpreは通ります。(現状のmd2reactの実装では、少しでも安全側に寄せて誤検出を許容しています) この実装もDOMParserに依存しているので、nodeでも動くようにできればピュアなJSの実装で、正しく壊れたHTML(XML)を検出したいのですが、より良い方法や、既存実装があったりしませんでしょうか。
回答: isInvalidXML関数が`""`と`""`とで、二回実行されているようです。 consoleから直接、isInvalidXML関数に対して文字列`"foo"`を送ると、 問題なく結果が返ってくるようなので、 問題はisInvalidXMLが呼ばれる以前にあるのではないかと思われます。 あまり深く追ってはいませんが、compile関数のnode.valueの時点で既に`""`だけになっているようですね。