ホームページ >ウェブフロントエンド >CSSチュートリアル >Java CSS パーサーを使用して HTML ドキュメント内の特定の要素の CSS スタイルを抽出するにはどうすればよいですか?

Java CSS パーサーを使用して HTML ドキュメント内の特定の要素の CSS スタイルを抽出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 20:57:03859ブラウズ

How do I extract CSS styles for specific elements in an HTML document using a Java CSS parser?

Java 用 CSS パーサー

要件

目的は、Java CSS パーサーを使用して HTML ドキュメント内の特定の要素の CSS スタイルを取得することです。

解決策

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 {

    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 {

            InputStream stream = oParser.getClass().getResourceAsStream(cssfile);

            out = new FileOutputStream("log.txt");

            if (out != null) {

                ps = new PrintStream(out);
                System.setErr(ps); //redirects stderr to the log file as well

            } else {

                return rtn;

            }

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

            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 ファイルを解析し、各セレクターとプロパティの値と優先順位を含むスタイル情報を抽出する方法を示します。

以上がJava CSS パーサーを使用して HTML ドキュメント内の特定の要素の CSS スタイルを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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