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

How to get list of valid tags of Jsoup whitelist?

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

我在 Jsoup whitelist docs 的文档中找不到这样的函数。我使用 ColdFusion,但 java 解决方案或提示就可以了。我想我可以翻译它。

你可以检查here,你要的是tagNames集。 class 不提供任何 getter.

您可以做的是:

  1. 下载 jsoup 的源代码,只需编辑 Whitelist class 并添加一个 getter。之后您甚至可以提出拉取请求。
  2. 获取每个白名单类别的默认标签,并将它们保存在您可以访问的变量中。
  3. 最后一种选择是使用反射来访问私有变量,但这不是一个好的做法,因为还有其他更简洁的方法可以实现您想要的。

如果你想走反射路线,你可以像下面这样获取对 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>

如果您需要属性 and/or 协议字段,这是一种类似的方法,但由于它们是映射,因此需要迭代更多内容。