Я пытаюсь прочитать файл 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();
} }}
это не даст мне групповые значения.
если я передам content Matcher, я получу ответ ".MainNav a: hover" в первой группе и
{ плыть налево; ширина: 70px; высота: 65px; border-top: 2px Solid # F4E6CC; Граница внизу: 2px Solid # 805822; Граница слева: 2px Solid # F4E6CC; Граница справа: 2px Solid # 805822; поле: 0px 0px 0px 0px; выровняйте: центр; семейство шрифтов: Verdana, Arial, Helvetica, без засечек; размер шрифта: 10 пикселей; вес шрифта: полужирный; цвет: #FFFFFF; текстовое оформление: нет; выравнивание текста: по центру; фон: # C99349; background-image: url (../../ images / hor_nav_bg.gif); background-repeat: repeat-X; обивка: 4px; ясно: левый; }
как определение как группа2
но этот контент является жестким кодом.
я пытаюсь cb cb content содержимое всего css файла.