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
相关文章
相关标签/搜索