Heim >Web-Frontend >CSS-Tutorial >Wie kann ich eine CSS-Datei in Java analysieren, bestimmte Regeln basierend auf Selektoren extrahieren und deren Stile abrufen?
CSS-Parsing in Java
Auf der Suche nach einem CSS-Parser für Java könnten Sie die W3C-SAC-Schnittstelle und ihre Implementierungen in Betracht ziehen. Allerdings kann es schwierig sein, Tutorials und Beispiele dafür zu finden.
Empfehlung und Codebeispiel
Ich empfehle dringend die Verwendung von CSSParser, der für sein hervorragendes Fehlerfeedback bekannt ist. Unten finden Sie einen modifizierten Beispielcode basierend auf 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>
Mit diesem Code können Sie eine CSS-Datei analysieren, auf bestimmte Regeln basierend auf Selektoren zugreifen und deren Stile aus dem CSSStyleDeclaration-Objekt abrufen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine CSS-Datei in Java analysieren, bestimmte Regeln basierend auf Selektoren extrahieren und deren Stile abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!