【问题标题】:Can Jsoup clean up elements based on its class?Jsoup 可以根据其类清理元素吗?
【发布时间】:2011-10-27 19:26:32
【问题描述】:

我正在使用 Jsoup 尝试清理文档中几乎所有的 html,但将带有 特定类span 标签列入白名单。

我有这个,但显然这结束了允许所有具有 attr 类的跨度

String html = "<p><strong>Lorem ipsum dolor<br /> sit amet</strong></p>"+
"<span class=\"killme\">Aenean</span> quam sem" +
"<span class=\"whitelistme\">lacinia molestie</span> nibh mattis ";

String clean = Jsoup.clean(html, 
                     Whitelist.none()
                     .addTags("span")
                     .addAttributes("span", "class"));

有没有办法清理除 之外的所有 html ?

所以我的最终结果将是

Lorem ipsum dolor sit amet
Aenean quam sem
<span class="whitelistme">lacinia molestie</span> nibh mattis

【问题讨论】:

    标签: java jsoup


    【解决方案1】:

    坚持使用Jsoup解决方案,您可以尝试以下步骤,但它是硬编码:

    1. 从文本中提取所有值元素到一个列表中。
    2. 将 span 元素中的所有值提取到另一个列表中。
    3. 使用附加标记修改文本值,例如 OMG_value。
    4. 从文本中删除所有 html 标记。
    5. 使用已保存列表中的值迭代并替换所有 OMG_values。

    如果您找到其他解决方案 - 坚持下去。这是您残酷 CEO 的硬编码救星。

    【讨论】:

    • 感谢 D1e,确实这会成功,但正如您提到的,这是硬编码的。我期待 jquery 选择器方式类似的东西,比如 .clean(".whitelistme")..
    • 当然,如果合法的话,您也可以尝试调整一些源代码。以 clean() 方法为例,实现自己的方法,如 clean(EnumHtml.Tag... excludes)。
    • 是的,它在公共 git 上,我可以试试那个。顺便说一句,我会给你这个功劳。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多