Как получить селектор внутри @media? - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь проанализировать CSS с помощью CSSParser Например, у меня есть css:

 final String css = "@media screen and (color) { h1 { color: red } }";

Я хочу получить эту часть:

{ h1 { color: red } }

Но когда я делаю это с помощью mediaList

    final CSSStyleSheet sheet = parse(css);
    final CSSRule cssRule = sheet.getCssRules().item(0);
    final MediaList mediaList = ((CSSMediaRuleImpl) cssRule).getMedia();

Я получаю только

Вывод: экран и (цвет)

Может, кто-нибудь сталкивался с этой проблемой?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Если кому-то нужен ответ:

@Test
public void testCSSParser2() throws IOException {
    String css = "@media only screen and (max-width: 600px) {body { background-color: lightblue } h1 { color: red } }";
    InputSource source = new InputSource(new StringReader(css));
    CSSOMParser parser = new CSSOMParser(new SACParserCSS3());
    CSSStyleSheet sheet = parser.parseStyleSheet(source, null, null);
    CSSRuleList rules = sheet.getCssRules();
    for (int x = 0; x < rules.getLength(); x++) {
        final CSSMediaRule mediaRule = ((CSSMediaRule) rules.item(x));
        CSSRuleList mediaRules = mediaRule.getCssRules();
        for (int y = 0; y < mediaRules.getLength(); y++) {
            final CSSRule rule = mediaRules.item(y);
            System.out.println(rule.getCssText());

        }
    }

}
0 голосов
/ 14 мая 2018

Я не притворяюсь, что знаю, о чем это все, но а

({.*})

может помочь регулярное выражение.

...