-3

我正在尝试读取一个 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 文件内容。

4

1 回答 1

1

找到第一个左大括号的位置,找到第一个右大括号的位置,从开始到左大括号获取文本,从左大括号到右大括号获取文本,在右大括号之后重复文本,直到没有更多文本。

于 2012-01-20T07:12:21.680 回答