2012-01-20 87 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

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