Java 如何获取Jsoup白名单的有效标记列表?
如何获取给定Jsoup的所有有效标记的列表Java 如何获取Jsoup白名单的有效标记列表?,java,coldfusion,jsoup,Java,Coldfusion,Jsoup,如何获取给定Jsoup的所有有效标记的列表白名单 我在目前的文档中找不到这样的函数。我使用ColdFusion,但是java解决方案或提示就可以了。我想我可以翻译它。你可以检查一下,你要的是标记名集。该类不提供任何getter 您可以做的是: 下载jsoup的源代码,只需编辑白名单类并添加一个getter。你甚至可以在那之后提出拉拽请求 获取每个白名单类别的默认标记,并将它们保存在您可以访问的变量中 最后一种选择是使用反射来访问私有变量,但这不是一种好的做法,因为还有其他更干净的方法来实现您想要
白名单
我在目前的文档中找不到这样的函数。我使用ColdFusion,但是java解决方案或提示就可以了。我想我可以翻译它。你可以检查一下,你要的是标记名集。该类不提供任何getter
您可以做的是:
下载jsoup的源代码,只需编辑白名单
类并添加一个getter。你甚至可以在那之后提出拉拽请求
获取每个白名单类别的默认标记,并将它们保存在您可以访问的变量中
最后一种选择是使用反射来访问私有变量,但这不是一种好的做法,因为还有其他更干净的方法来实现您想要的
如果您想执行反射路径,可以执行以下操作,即获取对标记名
集的访问权,将其转换为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>
白名单=createObject(“java”,“org.jsoup.safety.whitelist”);
集合=[];
tags=whitelist.getClass().getDeclaredField(“标记名”);
tags.setAccessible(true);
//这一部分以放松的白名单为例
for(tags.get(whitelist.relaxed()).toArray()中的标记){
arrayAppend(collection,tag.toString());
}
书面文件(收集);
如果您需要属性和/或协议字段,这是一种类似的方法,但由于它们是映射,因此还有更多内容需要迭代。@Thorsten-也是FWIW,我不知道您的最终目标是什么,但请记住,白名单不仅仅涉及标记。它还可以涉及属性、协议、电子技术。取决于你在做什么,这可能与你的应用程序有关…非常感谢,托尼!在您的帮助下,我可以实现所有必需的jsoup功能。