2012-01-20 88 views
-3

我想读一个CSS文件,找出CSS类及其定义,然后将其保存在与同级车的名称和说明一个CSV文件CSS文件的内容。使用Java,下面我有css文件common.css。阅读使用Java

/* 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(); 
    } }} 

它不会给我组值。 如果我通过内容到匹配器,它会给我答案“.MainNav答:悬停”在组之一, {浮动:左;宽度:70像素;高度: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;居中对齐; font-family:Verdana,Arial,Helvetica,sans-serif; font-size:10px; font-weight:bold;颜色:#FFFFFF;文字修饰:无; text-align:center;背景:#C99349; background-image:url(../../ images/hor_nav_bg.gif); background-repeat:repeat-X;填充:4像素;明确:左; } 作为定义组2

但内容是硬编码。 我正在尝试cb cb内容整个css文件内容。第一开口支撑的

+3

阅读文件,解析内容,获取定义。简单! –

+2

你为什么要这样做? – mrtsherman

+3

“......我目前遇到的麻烦最多”那么你的意思是说你已经开始对此做一些编码了?然后显示,我们可以指出哪里出了问题。 – footy

回答

1

查找位置,查找第一个右括号的位置,得到从开始文本左括号,从开捆带右括号获取文本,直到没有更多的文字是左右括号后的文本重复。

+0

不是,你似乎忽略了引用的字符串。 –