![](/img/trans.png)
[英]How do I exclude any anchor element from html body text with Jsoup?
[英]How do I prevent Jsoup from removing 'href' attribute of anchor element?
我想使用 Jsoup 来清理输入,同时仍然允许具有“href”属性的锚元素保持不变; 但是,我发现无论我做什么, Jsoup.clean() 都会删除“href”属性。 测试代码如下:
public static void main(String[] args)
{
final String foo = "<a href='/foo/'>Foo</a>";
final String cleansedOutput = Jsoup.clean(foo, Safelist.relaxed().addTags("a").addAttributes("a", "href"));
System.out.println("foo: " + foo);
System.out.println("cleansedOutput: " + cleansedOutput);
}
代码的输出如下:
foo: <a href='/foo/'>Foo</a>
cleansedOutput: <a>Foo</a>
如您所见,即使如上所示,我明确告诉 Jsoup 保留锚元素和“href”属性(我最初在添加addTags()
Safelist.relaxed()
) 和addAttributes()
;无论如何,他们都删除了该属性)。
难道我做错了什么? 或者这是 Jsoup 中的错误? (很难相信这是一个错误,因为他们的单元测试很早就会失败。)
从文档Jsoup.clean(java.lang.String,org.jsoup.safety.Safelist)
请注意,由于此方法不使用基本 href URL 来解析具有相对 URL 的属性,因此这些 URL 将被删除,除非输入 HTML 包含标签。 如果您希望保留这些,请改用 clean(String html, String baseHref, Safelist) 方法,并启用 Safelist.preserveRelativeLinks(boolean)。
String html = "<a href='/foo/'>Foo</a>";
Safelist safelist = Safelist.relaxed();
safelist.preserveRelativeLinks(true);
String clean = Jsoup.clean(html, "http://", safelist);
System.out.println(clean);
会打印出来
<a href="/foo/">Foo</a>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.