如何获取Jsoup白名单的有效标签列表?
How to get list of valid tags of Jsoup whitelist?
如何获取给定 Jsoup Whitelist
的所有有效标签的列表?
我在 Jsoup whitelist docs 的文档中找不到这样的函数。我使用 ColdFusion,但 java 解决方案或提示就可以了。我想我可以翻译它。
你可以检查here,你要的是tagNames
集。 class 不提供任何 getter.
您可以做的是:
- 下载 jsoup 的源代码,只需编辑
Whitelist
class 并添加一个 getter。之后您甚至可以提出拉取请求。
- 获取每个白名单类别的默认标签,并将它们保存在您可以访问的变量中。
- 最后一种选择是使用反射来访问私有变量,但这不是一个好的做法,因为还有其他更简洁的方法可以实现您想要的。
如果你想走反射路线,你可以像下面这样获取对 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 协议字段,这是一种类似的方法,但由于它们是映射,因此需要迭代更多内容。
如何获取给定 Jsoup Whitelist
的所有有效标签的列表?
我在 Jsoup whitelist docs 的文档中找不到这样的函数。我使用 ColdFusion,但 java 解决方案或提示就可以了。我想我可以翻译它。
你可以检查here,你要的是tagNames
集。 class 不提供任何 getter.
您可以做的是:
- 下载 jsoup 的源代码,只需编辑
Whitelist
class 并添加一个 getter。之后您甚至可以提出拉取请求。 - 获取每个白名单类别的默认标签,并将它们保存在您可以访问的变量中。
- 最后一种选择是使用反射来访问私有变量,但这不是一个好的做法,因为还有其他更简洁的方法可以实现您想要的。
如果你想走反射路线,你可以像下面这样获取对 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 协议字段,这是一种类似的方法,但由于它们是映射,因此需要迭代更多内容。