【问题标题】:CSS parser parsing string contentCSS解析器解析字符串内容
【发布时间】:2014-08-21 15:24:36
【问题描述】:

我正在尝试在 java 项目中使用 CSS Parser 从文本输入的字符串中提取 CSS 规则/DOM。

我遇到的所有示例都将 css 文件作为输入。有没有办法绕过文件读取,直接处理css文件的字符串内容。

因为我正在处理的类只获取 css 文件的字符串内容,并且所有的读取都已经处理好了。

现在我有这个,“cssfile”是正在解析的 css 文件的文件路径。

InputStream stream = oParser.getClass().getResourceAsStream(cssfile);
InputSource source = new InputSource(new InputStreamReader(stream));
CSSOMParser parser = new CSSOMParser();
CSSStyleSheet stylesheet = parser.parseStyleSheet(source, null, null);
CSSRuleList ruleList = stylesheet.getCssRules();  
System.out.println("Number of rules: " + ruleList.getLength());

Reference link

【问题讨论】:

    标签: java css parsing css-parsing


    【解决方案1】:

    我发现的一种解决方法是使用带有内容的 StringReader 创建一个 Reader,并为 Input 源设置 characterStream。但是应该有更好的方法来做到这一点..

    InputSource inputSource = new InputSource();
    Reader characterStream = new StringReader(cssContent);
    inputSource.setCharacterStream(characterStream);
    CSSStyleSheet stylesheet = cssParserObj.parseStyleSheet(source, null,
                null);
    CSSRuleList ruleList = stylesheet.getCssRules();
    

    【讨论】:

    • 为什么要有更好的方法?这似乎是一种完全合法的方式。
    • 我在 CSS Parser api 中搜索一种直接提供字符串内容以获得 CSSStyleSheet 的方法。想要取消从 String 中创建 Reader 对象。如果失败了,我将使用上述解决方案本身。
    • StringReader 是基于StringReader 的API 之间的一个非常标准的适配器。使您的 API 采用 ReaderReadable 可以同时启用内存中的内容和来自外部资源的内容,同时保持 API 较小,并且不会引入关于字符串输入是文件路径、URL 还是内容的歧义本身。
    • 哦,从来没有这样想过!从 API 的角度来看,将 url 输入与字符串内容输入分开是有意义的。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 2012-12-31
    • 2011-04-12
    • 2014-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多