ホームページ  >  記事  >  ウェブフロントエンド  >  Java で最適な CSS パーサーを選択するには?

Java で最適な CSS パーサーを選択するには?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 14:09:30573ブラウズ

How to Choose the Best CSS Parser in Java?

Java の CSS パーサー オプション

概要

開発者は Java の CSS パーサーをよく求めていますHTML 要素からスタイルを抽出するという課題に直面します。 W3C SAC インターフェイスは基盤を提供しますが、包括的なドキュメントを見つけるのは難しい場合があります。ここでは、潜在的な解決策の探究とガイドとなる詳細なコード例を示します。

CSS パーサー オプションの探求

注目すべきオプションの 1 つは CSSParser です。エラー フィードバック機能は貴重です。参照用に変更されたコード サンプルを次に示します。

<code class="java">package com.dlogic;

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.*;

// Main class
public class CSSParserTest 
{

    public static void main(String[] args) {

        CSSParserTest 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
            InputStream stream = oParser.getClass().getResourceAsStream(cssfile);

            // Create log file
            out = new FileOutputStream("log.txt");
            if (out != null)
            {
                ps = new PrintStream(out);
                System.setErr(ps); // Redirect stderr to log file
            } else {

                return rtn; 

            }


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

            // Inspect CSS DOM
            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));   
                    }
                }
            }

            if (out != null) out.close();
            if (stream != null) stream.close();
            rtn = true;
        }
        catch (IOException ioe)
        {
            System.err.println ("IO Error: " + ioe);
        }
        catch (Exception e)
        {
            System.err.println ("Error: " + e);
        }
        finally
        {
            if (ps != null) ps.close(); 
        }

        return rtn;

    }
}</code>

CSS パーサーのテスト

パーサーをテストするには、CSS を配置しますソース ディレクトリに「design.css」という名前のファイルを作成し、CSSParserTest のメイン メソッドを実行します。出力は「log.txt」に記録され、CSS ルールとスタイルに関する詳細が含まれます。

以上がJava で最適な CSS パーサーを選択するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。