【问题标题】:How to get list of valid tags of Jsoup whitelist?如何获取 Jsoup 白名单的有效标签列表?
【发布时间】:2015-06-15 09:29:13
【问题描述】:

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

我在Jsoup whitelist docs 的文档中找不到这样的功能。我使用 ColdFusion,但 java 解决方案或提示会很好。我想我可以翻译一下。

【问题讨论】:

    标签: java coldfusion jsoup


    【解决方案1】:

    如果你想走反射路线,你可以做类似下面的事情,获取对tagNames集合的访问,将其转换为org.jsoup.safety.Whitelist$TagName对象数组(包含标签名称),然后附加@ 987654323@这些对象的值到另一个数组。

    <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>
    

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

    【讨论】:

    • 感谢一百万次,托尼!在您的帮助下,我可以实现所有必需的 jsoup 功能。
    【解决方案2】:

    您可以检查here,您要的是tagNames 集。该类不提供任何 getter。

    你可以做的是:

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

    【讨论】:

    • @Thorsten - 同样是 FWIW,我不知道您的最终目标是什么,但请记住,白名单不仅仅涉及标签。它还可以涉及属性、协议等。根据您在做什么,这可能与您的应用相关...
    猜你喜欢
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    相关资源
    最近更新 更多