如何获取Jsoup白名单的有效标签列表?

时间:2015-06-15 09:29:13

标签: java coldfusion jsoup

如何获取给定Jsoup Whitelist的所有有效标签的列表?

我在Jsoup whitelist docs的文档中找不到这样的功能。我使用ColdFusion,但java解决方案或提示没问题。我想我可以翻译它。

2 个答案:

答案 0 :(得分:1)

您可以查看here,您要求的是tagNames设置。该课程不提供任何吸气剂。

你能做的是:

  1. 下载jsoup的源代码,然后编辑Whitelist类并添加一个getter。之后你甚至可以提出拉动请求。
  2. 获取每个白名单类别的默认标记,并将其保存在您可以访问的变量中。
  3. 最后一种选择是使用反射来获取对私有变量的访问权限,但这不是一个好习惯,因为还有其他更清晰的方法来实现你想要的东西。

答案 1 :(得分:1)

如果你想进入反射路线,你可以做类似下面的事情来抓取tagNames集的访问权限,将其转换为org.jsoup.safety.Whitelist$TagName个对象的数组(包含标记名称)和然后将这些对象的toString()值附加到另一个数组。

<cfscript>

whitelist = createObject("java", "org.jsoup.safety.Whitelist");
collection = [];
tags = whitelist.getClass().getDeclaredField("tagNames");
tags.setAccessible(true);

// this portion uses the relaxed whitelist as an example
for (tag in tags.get(whitelist.relaxed()).toArray()) {
    arrayAppend(collection, tag.toString());
}

writeDump(collection);

</cfscript>

如果您需要属性和/或协议字段,这是一种类似的方法,但由于它们是地图,因此需要进行迭代。