Rumah > hujung hadapan web > tutorial css > Bagaimanakah saya boleh menghuraikan fail CSS dalam Java, mengekstrak peraturan khusus berdasarkan pemilih dan mendapatkan semula gaya mereka?

Bagaimanakah saya boleh menghuraikan fail CSS dalam Java, mengekstrak peraturan khusus berdasarkan pemilih dan mendapatkan semula gaya mereka?

DDD
Lepaskan: 2024-11-02 19:46:31
asal
761 orang telah melayarinya

How can I parse a CSS file in Java, extracting specific rules based on selectors and retrieving their styles?

Penghuraian CSS dalam Java

Untuk mencari penghurai CSS untuk Java, anda boleh mempertimbangkan antara muka W3C SAC dan pelaksanaannya. Walau bagaimanapun, mencari tutorial dan contoh untuk ini boleh menjadi mencabar.

Sampel Pengesyoran dan Kod

Saya amat mengesyorkan menggunakan CSSParser, yang terkenal dengan maklum balas ralat yang sangat baik. Di bawah ialah kod sampel yang diubah suai berdasarkan CSSParser:

<code class="java">import com.steadystate.css.parser.CSSOMParser;
import org.w3c.css.sac.InputSource;
import org.w3c.dom.css.CSSStyleSheet;
import org.w3c.dom.css.CSSRuleList;
import org.w3c.dom.css.CSSRule;
import org.w3c.dom.css.CSSStyleRule;
import org.w3c.dom.css.CSSStyleDeclaration;
import java.io.*;


public class CSSParserTest {

    protected static CSSParserTest oParser;

    public static void main(String[] args) {
        oParser = new CSSParserTest();
        if (oParser.Parse("design.css")) {
            System.out.println("Parsing completed OK");
        } else {
            System.out.println("Unable to parse CSS");
        }
    }

    public boolean Parse(String cssfile) {
        FileOutputStream out = null;
        PrintStream ps = null;
        boolean rtn = false;

        try {
            // Access CSS file as a resource (must be in package)
            InputStream stream = oParser.getClass().getResourceAsStream(cssfile);
            // Overwrite existing file contents
            out = new FileOutputStream("log.txt");

            if (out != null) {
                // Log file
                ps = new PrintStream(out);
                System.setErr(ps);
            } else {
                return rtn;
            }

            InputSource source = new InputSource(new InputStreamReader(stream));
            CSSOMParser parser = new CSSOMParser();
            CSSStyleSheet stylesheet = parser.parseStyleSheet(source, null, null);

            // Iterate through DOM and inspect
            CSSRuleList ruleList = stylesheet.getCssRules();
            ps.println("Number of rules: " + ruleList.getLength());

            for (int i = 0; i < ruleList.getLength(); i++) {
                CSSRule rule = ruleList.item(i);
                if (rule instanceof CSSStyleRule) {
                    CSSStyleRule styleRule = (CSSStyleRule) rule;
                    ps.println("Selector:" + i + ": " + styleRule.getSelectorText());
                    CSSStyleDeclaration styleDeclaration = styleRule.getStyle();

                    for (int j = 0; j < styleDeclaration.getLength(); j++) {
                        String property = styleDeclaration.item(j);
                        ps.println("Property: " + property);
                        ps.println("Value: " + styleDeclaration.getPropertyCSSValue(property).getCssText());
                        ps.println("Priority: " + styleDeclaration.getPropertyPriority(property));
                    }
                }
            }
        } catch (IOException ioe) {
            System.err.println("IO Error: " + ioe);
        } catch (Exception e) {
            System.err.println("Error: " + e);
        } finally {
            if (ps != null) ps.close();
            if (out != null) out.close();
            if (stream != null) stream.close();
        }
        return rtn;
    }
}</code>
Salin selepas log masuk

Kod ini membolehkan anda menghuraikan fail CSS, mengakses peraturan khusus berdasarkan pemilih dan mendapatkan semula gaya mereka daripada objek CSSStyleDeclaration.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menghuraikan fail CSS dalam Java, mengekstrak peraturan khusus berdasarkan pemilih dan mendapatkan semula gaya mereka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan