我正在尝试读取一个 css 文件,找出 css 类及其定义,然后将其保存在一个带有类名和描述的 csv 文件中。使用Java,下面我有css文件,common.css。
/* CSS Document */
.Page
{
background-color: #F4EEE0;
background-image: none;
margin: 0px 0px 0px 0px;
scrollbar-face-color: #DEAC64;
scrollbar-highlight-color: #FFFFFF;
scrollbar-shadow-color: #805822;
scrollbar-3dlight-color: #B47F36;
scrollbar-arrow-color: #805822;
scrollbar-darkshadow-color: #7188AA;
scrollbar-base-color: #F4EEE0;
scrollbar-track-color: #E8C490;
}
a.PageLinkTrail
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-style: normal;
font-weight: bold;
color: #805822;
text-decoration:none;
}
a.PageLinkTrail:hover
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-style: normal;
font-weight: bold;
color: #805822;
text-decoration:underline;
}
.IconSpacing a:hover
{
padding: 3px 3px 3px 3px;
text-align:center;
width:15px;
height:15px;
border-top: 1px solid #FFFFFF;
border-right: 1px solid #C99349;
border-bottom: 1px solid #C99349;
border-left: 1px solid #FFFFFF;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
font-style: normal;
font-weight: normal;
color: #333333;
text-decoration:normal;
vertical-align:Top;
white-space:nowrap;
cursor:hand;
}
我要班级名称
.Page
a.PageLinkTrail
a.PageLinkTrail:hover
这是它的定义。
{
background-color: #F4EEE0;
background-image: none;
margin: 0px 0px 0px 0px;
scrollbar-face-color: #DEAC64;
scrollbar-highlight-color: #FFFFFF;
scrollbar-shadow-color: #805822;
scrollbar-3dlight-color: #B47F36;
scrollbar-arrow-color: #805822;
scrollbar-darkshadow-color: #7188AA;
scrollbar-base-color: #F4EEE0;
scrollbar-track-color: #E8C490;
}
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-style: normal;
font-weight: bold;
color: #805822;
text-decoration:none;
}
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
font-style: normal;
font-weight: bold;
color: #805822;
text-decoration:underline;
}
我想将其保存在 csv 文件中。我应该如何使用 Java 来获取名称和定义等 CSS 内容?这是我目前最难以完成的解决方案的一部分。我写了一个流动的代码
package com.tufan.digite.Count;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GetAllCssFiles {
public static void main(String args[]) throws IOException {
try {
FileInputStream fstream = new FileInputStream("D:/digite/work/digite/WEBUI/common/theme1/common.css");
DataInputStream dis = new DataInputStream(fstream);
FileChannel fc = fstream.getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0,(int) fc.size());
Charset cs = Charset.forName("8859_1");
CharsetDecoder cd = cs.newDecoder();
CharBuffer cb = cd.decode(bb);
String strLine;
String content = ".MainNav a:hover{ float:left; width:70px; height:65px; border-top: 2px Solid #F4E6CC; border-bottom: 2px Solid #805822; border-left: 2px Solid #F4E6CC; border-right: 2px Solid #805822; margin: 0px 0px 0px 0px; align:center; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; color: #FFFFFF; text-decoration: none; text-align: center; background:#C99349; background-image: url(../../images/hor_nav_bg.gif); background-repeat: repeat-X; padding:4px; clear:left; }";
Pattern p = Pattern.compile("([a-zA-Z_0-9 | -|:|;|\n\t]*)(\\{[\n\t]*[a-zA-Z_0-9 | -|:|;|\n\t]*\\})");
Matcher matcher = p.matcher(cb);
while (matcher.find()) {
String selector = matcher.group(1);
String definition = matcher.group(2);
System.out.println("selector:" + selector + "Definition"
+ definition);
}
} catch (Exception e) {
e.printStackTrace();
} }}
它不会给我组值。如果我将内容传递给 Matcher,它将在第一组中给我 ans“.MainNav a:hover” 和 { float:left; 宽度:70px;高度:65px;边框顶部:2px 实心#F4E6CC;边框底部:2px 实心#805822;左边框:2px 实心#F4E6CC;右边框:2px 实心#805822;边距:0px 0px 0px 0px;居中对齐; 字体系列:Verdana、Arial、Helvetica、sans-serif;字体大小:10px;字体粗细:粗体;颜色:#FFFFFF;文字装饰:无;文本对齐:居中;背景:#C99349; 背景图片:网址(../../images/hor_nav_bg.gif);背景重复:重复-X;填充:4px;清除:左;} 作为 group2 的定义
但该内容是硬编码的。我正在尝试cb cb 内容整个 css 文件内容。