>웹 프론트엔드 >CSS 튜토리얼 >Java에서 CSS 파일을 구문 분석하고 선택기를 기반으로 특정 규칙을 추출하고 해당 스타일을 검색하려면 어떻게 해야 합니까?

Java에서 CSS 파일을 구문 분석하고 선택기를 기반으로 특정 규칙을 추출하고 해당 스타일을 검색하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-02 19:46:31769검색

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

Java의 CSS 구문 분석

Java용 CSS 파서를 검색할 때 W3C SAC 인터페이스와 그 구현을 고려할 수 있습니다. 그러나 이에 대한 튜토리얼과 예제를 찾는 것은 어려울 수 있습니다.

권장 사항 및 코드 샘플

탁월한 오류 피드백으로 유명한 CSSParser를 사용하는 것이 좋습니다. 다음은 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>

이 코드를 사용하면 CSS 파일을 구문 분석하고, 선택기를 기반으로 특정 규칙에 액세스하고, CSSStyleDeclaration 개체에서 해당 스타일을 검색할 수 있습니다.

위 내용은 Java에서 CSS 파일을 구문 분석하고 선택기를 기반으로 특정 규칙을 추출하고 해당 스타일을 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.