`

使用java解析CSS文件

阅读更多

 

    最近为了满足功能研发,动态设置部件属性信息,需要解析前端界面的CSS样式表,但是在网上查了查,目前比较合适的是cssparser,但是不满足获取样式的某个属性,这是我写了个工具类,通过正则表达式和cssparser解析样式文件,获取样式类信息,也可获取某个样式类下的某个属性信息,代码如下,需要引入两个jar包(cssparser-0.9.18.jar和sac.jar,在附件中可下载)

package com.demo;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.w3c.css.sac.InputSource;
import org.w3c.dom.css.CSSRule;
import org.w3c.dom.css.CSSRuleList;
import org.w3c.dom.css.CSSStyleSheet;

import com.steadystate.css.parser.CSSOMParser;
import com.steadystate.css.parser.SACParserCSS3;

public class CSSUtil {

	private CSSStyleSheet sheet = null;
	
	public CSSStyleSheet getSheet() {
		return sheet;
	}

	public void setSheet(CSSStyleSheet sheet) {
		this.sheet = sheet;
	}

	/**
	 * 指定文件流
	 * @param stream
	 */
	public CSSUtil(InputStream stream){
		InputSource source = new InputSource(new InputStreamReader(stream));
		
		CSSOMParser parser = new CSSOMParser(new SACParserCSS3());
		try {
			 sheet = parser.parseStyleSheet(source, null, null);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 获取样式信息
	 * @param className 样式名
	 * @return 返回该样式的信息
	 */
	public String getClass(String className){
		if(sheet == null){
			return null;
		}
		String res = "";
		CSSRuleList rules = sheet.getCssRules();
		for (int i = 0; i < rules.getLength(); i++) {
		    CSSRule rule = rules.item(i);
		    Pattern pattern = Pattern.compile("\\."+className + ".*([^\\{]\\{.*[^\\}]\\})");
			Matcher matcher = pattern.matcher(rule.getCssText());
			while(matcher.find()){
				res = res + matcher.group(1) + "\n";
			}
		}
		return res;
	}
	/**
	 * 获取某个样式类下的某个属性信息,没有返回空
	 * @param className 样式类名称
	 * @param attrName 属性名称
	 * @return
	 */
	public String getCssAttribute(String className, String attrName){
		String classContent = this.getClass(className);
		Pattern pattern = Pattern.compile("[^a-zA-Z\\-]" + attrName + ":\\s*([^;\\}]{1,100})\\s*[;\\}]{1}");
		Matcher matcher = pattern.matcher(classContent);
		String res = "";
		while(matcher.find()){
			res = matcher.group(1);
		}
		return res;
	}
}

 

  • sac.jar (14.2 KB)
  • 下载次数: 28
分享到:
评论
1 楼 武林第一帅哥 2017-12-21  
很靠谱嘛。。。

相关推荐

    java实现js、css、图片合并到html文件

    技术点:1、使用htmlparser解析html文件,得到html代码里的js、css、img链接 2、将相对路径的链接转变成绝对路径,并读取资源 3、将css和js合并到html 4、将图片转换成base64编码,写入标签的src

    javaCssParser:用于CSS文件解析的简单Java库

    javaCssParser 用于CSS文件解析的简单Java库

    jsoup:Java HTML 解析器

    从 URL、文件或字符串中抓取并解析HTML 使用 DOM 遍历或 CSS 选择器查找并提取数据 操作HTML 元素、属性和文本 根据安全列表清理用户提交的内容,以防止 XSS 攻击 输出整洁的 HTML jsoup 旨在处理各种常见的 HTML;...

    jStyleParser:jStyleParser是用Java编写CSS解析器。 它具有自己的应用程序界面,该界面旨在允许以Java进行高效CSS处理并将值映射到Java数据类型。 它将CSS 2.1样式表解析为可以有效分配给DOM元素的结构。 它旨在用作CSSBox库的主要CSS解析器。 处理错误时,它是符合CSS规范的用户代理

    jStyleParser jStyleParser是一个Java库,用于解析CSS样式表并根据CSS 3规范将样式分配给HTML或XML文档元素。 它允许解析单个CSS文件以及计算DOM元素的有效样式。 有关更多信息,请参见项目页面: : 安装对于Maven,...

    使用java-jsoup解析html页面内容,爬取想要的信息(如号段)

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。 jsoup 可以从包括字符串、URL 地址...

    ph-css:Java CSS 2和CSS 3解析器和生成器

    用于在构建时压缩CSS文件的Maven插件位于子项目ph-csscompress-maven-plugin中,并在下面进行了介绍。 ph-css没有将CSS应用于HTML元素的逻辑。 该页面显示了一些可用于使用该库的基本代码示例。 所有代码段均可...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    HTML解析器 jsoup

    jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。 jsoup的主要功能如下: 从一个URL,文件或...

    java开源包8

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    jsoup基于java爬虫项目

    jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 Jsoup的主要功能 1)从一个URL,文件或字符串中...

    sis-pst:PST(Outlook)文件解析器

    将项目 SDK 设置为 Java 1.8,将项目语言级别设置为 8 - Lambdas、类型注释等。将尽快提供自可执行的 jar 文件。 如何使用应用程序: 应用程序启动后,选择 PST 文件。 按“启动”按钮 分析 PST 文件后(可能需要...

    java开源包11

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包6

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包4

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包9

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包101

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java面试题及技巧4

    │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form...

    java开源包5

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

Global site tag (gtag.js) - Google Analytics