最近为了满足功能研发,动态设置部件属性信息,需要解析前端界面的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; } }
相关推荐
通过上述步骤,我们可以有效地使用Java解析MHT文件并从中提取所需的内容。这种方法不仅适用于简单的MHT文件解析,还可以进一步扩展来支持更复杂的场景,比如处理嵌入式资源或进行更深入的文本分析。 ### 结语 本文...
- 使用DOM解析器:如果需要解析CSS文件的内容,可以使用`javax.xml.parsers.DocumentBuilderFactory`来创建DOM解析器,将CSS内容转化为XML结构,然后遍历节点获取样式规则。 - 使用第三方库:如Apache Commons IO...
Java解析模块会将这些内容解压、提取,并可能进行进一步的处理,如图像的重命名和移动,以适应不同的设备和阅读环境。 在FBreader的优化版本中,可能包括了性能提升、内存管理优化、错误修复或新特性添加。例如,...
9. **易用性和文档**:为了便于开发者使用,JavaCssParser应该提供清晰的API文档,详细解释每个方法的功能和用法,同时提供示例代码以展示如何操作CSS文件。 10. **社区支持和持续维护**:一个活跃的开发者社区和...
在这个场景下,我们讨论的是如何利用Java解析HTML以获取特定标签路径下的内容,例如`html/body/div/div/`。 首先,我们需要一个强大的库来解析HTML,如Jsoup。Jsoup是一个用于处理实际世界HTML的Java库,它提供了一...
在压缩包文件"Demo"中,可能包含了一个简单的Java项目,演示了如何结合使用jsoup抓取网页上的PDF链接,并用PDFBox读取下载的PDF内容。项目可能分为两个部分:一个用于下载PDF,另一个用于解析PDF。 总结,这个实例...
接下来,我们来看如何使用POI解析不同类型的文件: 1. **解析doc和docx文件**: - 对于.doc文件,我们需要使用HWPFDocument类来打开文档。然后,我们可以使用Document对象的方法如getText()来获取整个文档的文本。...
例如,你可以使用 `Jsoup.connect(url).get()` 获取网页内容,然后使用 `select("CSS 选择器")` 来查找特定元素。 ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; Document doc = Jsoup....
jStyleParser jStyleParser是一个Java库,用于解析CSS样式表并根据CSS 3规范将样式分配给HTML或XML文档元素。 它允许解析单个CSS文件以及计算DOM元素的有效样式。 有关更多信息,请参见项目页面: : 安装对于Maven,...
在Java中,我们可以使用诸如Jsoup这样的库来解析CSS文件。Jsoup能很好地处理HTML和CSS,提供了一套方便的API来提取和操作元素。 接下来,我们将使用以下步骤来实现下载CSS文件中图片的功能: 1. **读取CSS文件**:...
它提供了非常方便的方法来提取和操作数据,使用DOM,CSS以及类似于jQuery的API。jsoup能够理解HTML的不完美之处,同时提供了强大的功能来清洁、解析、修改以及提取HTML内容。 ### jsoup的核心功能 1. **HTML解析**...
技术点:1、使用htmlparser解析html文件,得到html代码里的js、css、img链接 2、将相对路径的链接转变成绝对路径,并读取资源 3、将css和js合并到html 4、将图片转换成base64编码,写入标签的src
总之,通过使用Jsoup,我们可以轻松地解析HTML文档,找到所有的图片链接,并使用Java的网络和文件I/O功能将它们下载到本地。这个项目不仅可以作为学习Java网络编程和HTML解析的实践,还可以应用于各种实际场景,例如...
解析.doc文件时,你需要使用HWPFDocument类来创建一个文档对象,然后通过这个对象可以访问文档的段落、字符等元素。例如: ```java FileInputStream fis = new FileInputStream("document.doc"); HWPFDocument ...
3. `Java服务端代码`:处理文件上传的Servlet或Controller,负责接收请求、解析文件并保存到服务器。 4. `CSS样式文件`:定义了上传界面的样式,使界面更加美观。 5. `HTML模板`:可能包含了SWF和EXT的初始化代码,...
在Java编程环境中,将一个URL链接的内容转换为PDF文件是一个常见的需求,这通常涉及到网络请求、HTML解析以及PDF生成等多个步骤。以下是一个详细的步骤指南,涵盖了这个过程中的关键知识点: 首先,我们需要处理URL...
这个工具可以帮助开发者理解和解析CSS盒模型,进而实现网页元素的截图并保存为图片的功能。在Java应用开发中,有时我们需要在后台程序中对网页进行操作,比如自动化测试、数据分析或内容抓取,CSSBox就能派上用场。 ...
- **解析MHT文件**:读取MHT文件中的HTML代码以及资源文件(如图片、CSS等)。 - **提取资源**:从MHT文件中分离出资源文件并存储到指定目录。 - **更新HTML代码**:修改HTML中的资源引用路径,使其指向新存储的位置...
在这个“java文件上传和上传excel后并解析出来的小工具”中,我们可以探讨以下几个核心知识点: 1. **MultipartFile接口**:在Spring框架中,`MultipartFile`接口用于处理HTTP请求中的多部分文件数据。它提供了读取...