记录一下jsoup解析html(4)

接下来看一下“可操作 HTML元素、属性、文本”的功能
反正html就是一些元素、属性、文本的集合,有时候我们解析某个html也许想要修改其中的属性和文本,当然你要改变元素标签名也行,就是先删除某个元素然后再添加,嘿嘿,百度百科如是说
首先看那些简单的小例子说明一下:
doc.select("a").attr("rel", "nofollow"); //为所有链接增加rel=nofollow 属性
doc.select("img").removeAttr("onclick"); //删除所有图片的onclick属性  
doc.select("a").addClass("mylinkclass"); //为所有链接增加class=mylinkclass 属性   
doc.select("input[type=text]").val(""); //清空所有文本输入框中的文本 

修改完成之后调用Element的html()获取整个文档,其它的一些方法大家可以查看官方文档进行了解

另外jsoup还有一些别的功能,首先有一个这样的需求:在做网站的时候,经常会提供用户评论的功能。有些用户比较淘气,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,例如XSS 跨站点攻击之类的。
看一段代码你就懂说的是什么:
public static void main(String[] args) {
    String unsafe = "<p><a href='http://www.iteye.com/' onclick='attack()'>ITEYE</a></p>";
    String safe = Jsoup.clean(unsafe, Whitelist.basic());
    System.out.println(safe);
}

输出结果如下:
<p><a href="http://www.iteye.com/" rel="nofollow">ITEYE</a></p>

查看官方文档可以看到Whitelist有五个静态方法,我的理解是这就相当于五种过滤模式,这五个方法中文说明如下:
记录一下jsoup解析html(4)
最后百度百科有说:如果这五个过滤器都无法满足你的要求呢,例如你允许用户插入flash 动画,没关系,Whitelist提供扩展功能,例如whitelist.addTags("embed","object","param","span","div");也可调用addAttributes方法为某些元素增加属性。


你可能感兴趣的:(html,解析,JSoup,parse)