使用Java读取css文件的内容

时间:2012-01-20 06:55:08

标签: java css parsing file-read

我正在尝试读取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,它会在第一组中给我“.MainNav a:hover” { 向左飘浮;宽度:70像素;高度:65px; border-top:2px Solid#F4E6CC; border-bottom:2px Solid#805822; border-left:2px Solid#F4E6CC; border-right:2px Solid#805822;保证金:0px 0px 0px 0px;居中对齐; font-family:Verdana,Arial,Helvetica,sans-serif; font-size:10px; font-weight:bold;颜色:#FFFFFF; text-decoration:none; text-align:center;背景:#C99349; background-image:url(../../ images / hor_nav_bg.gif); background-repeat:repeat-X;填充:4像素;明确:左; } 定义为group2

但该内容是硬编码。 我正在尝试 cb cb内容整个css文件内容。

1 个答案:

答案 0 :(得分:1)

找到第一个左大括号的位置,找到第一个右大括号的位置,从开始到大括号获取文本,从左大括号到右大括号获取文本,在大括号后重复文本,直到不再有文本为止。