Java实现从html中提取css

 

项目中需要实现一个功能,即将html中标签的style属性值,提取出单独的css文件。

 

目前已有相关的网站实现: extractcss.com

 

虽然开源,但是它是通过js实现,而且用到了jquery。

 

本文将讨论如何在java中实现类似的功能,由于项目的需要,所以只实现一部分功能(class选择器)。

该功能用到了Java中拥有类似于JQuery选择器功能的html解析工具Jsoup: http://jsoup.org/

 

实现的方法如下:

/**
	 * 从html中获取出css文本
	 * 参考extractCss网站
	 * 借助于Js
	 * @param html    含有style格式的html文本
	 * @return        提取出的css文本
	 */
	public static String extractCss(String html){
		Set<String> allClasses = new HashSet<String>();   // 初始化参数
		StringBuffer resultCss = new StringBuffer();
		org.jsoup.nodes.Document doc = Jsoup.parse(html);       //获取html对象
		Elements classes = doc.select("*[class]");
		for(Iterator<Element> ite = classes.iterator(); ite.hasNext();){
			Element element = ite.next();
			String splits[] = element.attr("class").split(" ");
			for(int i=0; i< splits.length; i++){
				allClasses.add(splits[i]);
				if(i==splits.length-1){
					Elements children = doc.select("."+splits[i]+"> *");
					for(Iterator<Element> tor = children.iterator(); tor.hasNext();){
						Element e = tor.next();
						if(!e.hasAttr("class")){                   //如果没有定义class属性
							allClasses.add(splits[i]+" > "+e.tagName().toLowerCase());
						}
					}
				}
			}
		}
		for(String clss: allClasses){
			Elements element = doc.select("."+clss);
			if(element.hasAttr("style")){
				resultCss.append("."+clss+"{"+element.attr("style")+"}");
			}
		}
		return resultCss.toString();
	}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值