-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ファイルに保存したい。名前や定義などの CSS コンテンツを取得するには、Java をどのように使用すればよいですか? これは、現時点で完了に最も苦労しているソリューションの一部です。流れるようなコードを書いた

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 に渡すと、グループ 1 で ".MainNav a:hover" が返され、{ float:left; 幅:70px; 高さ: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; フォントサイズ: 10px; フォントの太さ: 太字; 色: #FFFFFF; テキスト装飾: なし; テキスト整列: 中央; 背景:#C99349; 背景画像: url(../../images/hor_nav_bg.gif); 背景繰り返し: 繰り返し-X; パディング:4px; クリア:左; group2 としての定義として

しかし、その内容はハードコードです。cb cb content 全体の css ファイル コンテンツを試しています。

4

1 に答える 1

1

Find position of first opening brace, find position of first closing brace, get text from beginning to opening brace, get text from opening brace to closing brace, repeat with text after closing brace until no more text is left.

于 2012-01-20T07:12:21.680 に答える