JSOUP - 如何获取 html 中不允许的标签列表?

JSOUP - How to get list of disallowed tags found in html?

我使用 JSoup 来保护富文本区域免受有害代码的侵害。如何获取在传递给 JSoup 的解析、清理或 isValid 函数的字符串中找到的所有不允许 tag/code 的列表?

我使用 ColdFusion,可以像这样用 JSoup 解析文本:

var jsoupDocument = application.jsoup.parse( this.Description );

如何使用 JSoup 的 getErrors() 函数获取列表以查看哪个 HTML 不符合我的 whitelist.relaxed()

我不相信 jsoup 中有直接函数可以根据您的白名单获取无效元素的列表。你必须自己动手。

并不太复杂。您仍然可以使用 Document 对象、select 所有元素,然后使用 jsoup 的 isValid() 函数根据您的白名单单独检查它们。

例如,这可能会让您入门...

<cfscript>

jsoup = createObject("java", "org.jsoup.Jsoup");
whitelist = createObject("java", "org.jsoup.safety.Whitelist").relaxed();
form.textarea = '<header>Hi</header><script>hello</script><nav><li>Links</li></nav></textarea>';

badTags = [];
content = jsoup.parse(form.textarea).body().select("*");
for(element in content) {
    // tagName() doesn't inlcude the brackets so add them in
    tag = chr(60) & element.tagName() & chr(62);
    if (!jsoup.isValid(tag, whitelist)) {
        arrayAppend(badTags, tag);
    }
}

writeDump(badTags);

</cfscript>