Jsoup學習之Whitelist類

Whitelist類 html

1、類結構 java

java.lang.Object api

  org.jsoup.safety.Whitelist url

public class Whitelist    spa

     extends .net

     Object code

Whitelist類定義了一些能夠被保留的標籤和屬性,不屬於這個範圍的標籤和屬性的都要被刪除。 htm

默認的配置方法有: blog

none() 圖片

simpleText()

basic()

basicWithImages()

relaxed()

若是想擴大篩選範圍,可使用如下方法:

addTags(java.lang.String...)

addAttributes(java.lang.String,java.lang.String...)

addEnforcedAttribute(java.lang.String,java.lang.String, java.lang.String)

addProtocols(java.lang.String,java.lang.String, java.lang.String...)

2、方法

Constructor Summary

Whitelist() 
          
建立一個空白的Whitelist

 

 

Method Summary

 Whitelist

addAttributes(String tag, String... keys) 

給標籤添加屬性。Tag是屬性名,keys對應的是一個個屬性值。例如:addAttributes("a", "href", "class") 表示:給標籤a添加hrefclass屬性,即容許標籤a包含hrefclass屬性。若是想給每個標籤添加一組屬性,使用:all。例如: addAttributes(":all", "class").即給每一個標籤添加class屬性。

 Whitelist

addEnforcedAttribute(String tag, String key, String value) 
給標籤添增強制性屬性,若是標籤已經存在了要添加的屬性,則覆蓋原有值。tag:標籤;key:標籤的鍵;value:標籤的鍵對應的值。例如: addEnforcedAttribute("a", "rel", "nofollow") 表示 <a href="..." rel="nofollow">

 Whitelist

addProtocols(String tag, String key, String... protocols) 
URL屬性添加協議。例如: addProtocols("a", "href", "ftp", "http", "https")標籤ahref鍵能夠指向的協議有ftphttphttps

 Whitelist

addTags(String... tags) 
Whitelist添加標籤

static Whitelist

basic() 
容許的標籤包括: a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ul,以及合適的屬性。標籤a指向的鏈接能夠是 http, https, ftp, mailto,轉換完後會強制添加 rel=nofollow這個屬性。不容許包含圖片。

static Whitelist

basicWithImages() 

basic的基礎上增長了圖片的標籤:img以及使用src指向httphttps類型的圖片連接。

protected  boolean

isSafeTag(String tag) 
判斷參數tag是否符合當前的Whitelist

static Whitelist

none() 
只保留文本,其餘全部的html內容均被刪除

 Whitelist

preserveRelativeLinks(boolean preserve) 
false
(默認):不保留相對地址的urltrue:保留相對地址的url

static Whitelist

relaxed() 
容許的標籤: a, b, blockquote, br, caption, cite, code, col, colgroup, dd, dl, dt, em, h1, h2, h3, h4, h5, h6, i, img, li, ol, p, pre, q, small, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, u, ul結果不包含標籤rel=nofollow ,若是須要能夠手動添加。

static Whitelist

simpleText() 
只容許: b, em, i, strong, u.

3、總結

Whitelist的基本方法有四種:

none:只保留了文本;

simpleText:簡單的文本屬性b, em, i, strong, u

basica, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q,small,strike, strong, sub, sup, u, ul

basicWithImagesa, b, blockquote, br, cite, code, dd, dl,dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ulimgsrc

Relaxed:a, b, blockquote,br, caption, cite, code, col, colgroup, dd, dl, dt, em, h1, h2, h3, h4, h5, h6,i, img, li, ol, p, pre, q, small, strike, strong, sub, sup, table, tbody, td,tfoot, th, thead, tr, u, ul

四種所包含的屬性愈來愈多,若是還不知足,可使用addAttributesaddEnforcedAttributeaddProtocolsaddTags可是這個添加要謹慎。

4、實例

  1. public static void JsoupClean(){  
  2.    html = "<ahref=\"http://www.baidu.com/gaoji/preferences.html\"name=\"tj_setting\">搜索設置</a>";  
  3.    String doc = Jsoup.clean(html, baseUri, Whitelist.none());      
  4.    System.out.println(doc);  
  5.    System.out.println("*******");  
  6.    doc = Jsoup.clean(html, baseUri, Whitelist.simpleText());  
  7.    System.out.println(doc);  
  8.    System.out.println("*******");  
  9.    doc = Jsoup.clean(html, baseUri, Whitelist.basic());  
  10.    System.out.println(doc);  
  11.    System.out.println("*******");  
  12.    doc = Jsoup.clean(html, baseUri, Whitelist.basicWithImages());  
  13.    System.out.println(doc);  
  14.    System.out.println("*******");  
  15.    doc = Jsoup.clean(html, baseUri, Whitelist.relaxed());  
  16.    System.out.println(doc);  
  17. }  

本文爲Eliot原創,轉載請註明出處: http://blog.csdn.net/xyw_eliot/article/details/9145523
相關文章
相關標籤/搜索