![](/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.